在沙箱中重新启动后访问同一文件

NSA*_*ict 2 macos cocoa sandbox objective-c

我的应用程序在下面读取iTunes的XML库文件

/Users/username/Music/iTunes/iTunes Music Library.xml
Run Code Online (Sandbox Code Playgroud)

但是,如果iTunes资料库存储在不同的硬盘上,则此文件也将存储.沙箱不允许我访问此文件,除非用户授予它.

这是使用a完成的NSOpenPanel.

但是,现在我必须要求用户每次打开应用程序时都有权访问此文件,这非常烦人.

有没有办法永久授予对特定文件的访问权限?

编辑

例如,如果您在另一个应用程序中打开一个文件,如果您退出该应用程序,该应用程序将再次打开相同的文件.像这样的东西会很有用.

CRD*_*CRD 5

您需要的是使用安全范围的书签.您需要做的概述是:

  1. 检查您是否有已保存的书签(见下文),如果有,请将其激活.完成.
  2. 让用户使用选择文件/文件夹 NSOpenPanel
  3. 获取返回的URL并将其作为安全范围书签保存到磁盘 - 将其保存在容器中的某个位置,您NSUserDefaults可以选择.

而已.您需要阅读Apple的文档以了解详细信息.