我有一个沙盒的Cocoa应用程序。它有一个窗口,多标签UI。我不使用NSDocument,但它是一个可以编辑多个“文档”的应用程序。当应用关闭时,我保存一份打开的文档列表。当我重新启动应用程序时,我尝试在选项卡中重新打开它们。
当所有文档文件都在沙盒文档目录中时,这可以正常工作。但是,用户也可以打开沙箱外的文件。重新启动应用程序时,由于沙箱权限而无法打开这些文件,因此该文件无法读取。我明白通常用户必须从打开的对话框中选择out-of-sandbox文件。
这些文件位于“最近的文件”列表中,可以这样打开。
必须有一种方法可以做到这一点,因为这是大多数文本编辑器的工作方式。是否有神奇的权利或我失踪的电话?
答案 0 :(得分:2)
您需要安全范围的书签。
查看Apple Security-Scoped Bookmarks and Persistent Resource Access的App Sandbox Design Guide部分。
您的应用可以访问其容器外的文件系统位置 通过用户意图授予您的应用程序,例如通过 Powerbox不会在应用启动或系统中自动保留 重新启动。当您的应用重新开启时,您必须重新开始 ...
从OS X v10.7.3开始,您可以保留对文件系统资源的访问权限 采用安全机制,称为安全范围的书签, 保留用户意图。
我在这里总结一下,但上面的链接包含了你需要的一切。