【发布时间】:2020-04-08 16:51:14
【问题描述】:
我正在打开一个模式面板来选择一个文件,但在返回时我发现 .url 的值是 nil 而 .urls 是 [0] = {}。
@IBOutlet weak var selectedFilePath: NSPathControl!
@IBAction func chooseFile(_ sender: NSButton) {
var selectedFileURL: URL?
let panel = NSOpenPanel()
// configure the panel
panel.canChooseFiles = true
panel.canChooseDirectories = false
panel.allowsMultipleSelection = false
panel.allowedFileTypes = ["mov","mp4"]
// open the panel
if panel.runModal() == NSApplication.ModalResponse.OK {
selectedFileURL = panel.url
selectedFilePath.url = selectedFileURL
...
}
}
因此,所有通过selectedFileURL 的后续函数调用都将接收nil。然而,为了进一步混淆问题,尽管panel.url 和随后的selectedFileURL 被设置为nil,但在UI 中selectedFilePath NSPathControl 确实会更新以反映所选的文件路径!
我尝试了许多不同的方法来打开和响应面板,但在所有情况下我都无法访问 url……
【问题讨论】:
标签: swift macos swift5 nsopenpanel