【问题标题】:NSOpenPanel returns with nil values for url and urlsNSOpenPanel 返回 url 和 urls 的 nil 值
【发布时间】: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


    【解决方案1】:

    在新项目中,应用程序默认为沙盒。

    在目标的Signing & Capabilities中删除App Sandbox(点击右侧的小x)或在文件访问部分启用@ 用户选择的文件

    类型的 987654323@ 或 Read/Write

    【讨论】:

    • 我忘了提,我已经检查过了,并将用户选择的文件设置为读/写访问权限。看起来这可能是一个沙盒问题,但看不到任何其他要翻转的开关。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多