在沙盒中运行的应用程序只能访问存在于沙盒中的文件,并且在指定的沙盒容器内可以无限制的进行读取和写入。此外,如果用户授权访问一个指定的文件或文件夹,沙盒还允许应用程序读取或者写入该位置。
启用沙盒:
在导航窗格顶部选择项目
在capabilities选项卡中找到app sandBox,并打开。
在沙盒设置屏幕上,可以指定应用程序应当具有访问哪些部分的权限。
打开和保存面板:
要让用户指明你的 app可以访问某个文件,一种方法是使用NSOpenPanel或者NSSavePanel。但是,在应用程序被放进沙盒里以后,所显示的面板实际上并不是由你的应用程序显示的,而是由一个名为powerBox的内置系统组件显示的。
下面是一个栗子,说明可以如何访问用户请求的一个文件夹:
let panel = NSOpenPanel()
panel.canChooseDirectories = true
panel.canChooseFiles = false
panel.beginWithCompletionHandler { (Int) -> Void in
let theURL = panel.URL
print(theURL!)
// 对用户选择的URL做一些事情
// 我们现在拥有这一位置的许可
}