[MAC OS] NSOpenPanel 使用

Mac OS开启沙盒之后,文件的保存会涉及到一个权限问题。如下图,在Capabilities中,可以勾选的权限一共有5种。

User Selected File 必须勾选,否则 NSOpenPanel 无法起来。

NSSavePanel

需要保存文档到本地,因为不是Pictures、Music或者Movies,不能使用这几个权限,因此使用NSSavePanel让用户自定义保存路径

NSOpenPanel

这个类继承与NSSavePanel,它可以获取选中的文件夹权限,可以在这个文件夹下,读写文件,追加文件路径进行读写,都可以。在需要一次写入多个文件的时候,应该使用NSOpenPanel这个类。如果只进行单个文件读写操作而言,那么可以使用NSSavePanel,这个类的权限,仅限于当前Panel选中的文件。总结起来就是:NSSavePanel权限针对与选中的单个文件操作,NSOpenPanel权限要大一些,可以拥有文件夹的权限。

 @IBAction func showGrantPermissionPanel(_ sender: Any) {
        print("showGrantPermissionPanel")
        let openPanel = NSOpenPanel();
        openPanel.allowsMultipleSelection = false;
        openPanel.canChooseDirectories = true;
        openPanel.canChooseFiles = true;
        openPanel.message = "本应用需要访问该目录,请点击允许按钮"
        openPanel.prompt = "允许"
        openPanel.directoryURL = URL.init(string: NSHomeDirectory());
        openPanel.begin(completionHandler: { (result) in
            if result == NSModalResponseOK {
                print("ddsskj")
            }
        })
    }

  

原文地址:https://www.cnblogs.com/0616--ataozhijia/p/6899775.html