[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") } }) }