Cocoa沙箱 - 重新启动应用程序时重新打开文件

时间:2016-02-24 22:10:00

标签: file cocoa sandbox

我有一个沙盒的Cocoa应用程序。它有一个窗口,多标签UI。我不使用NSDocument,但它是一个可以编辑多个“文档”的应用程序。当应用关闭时,我保存一份打开的文档列表。当我重新启动应用程序时,我尝试在选项卡中重新打开它们。

当所有文档文件都在沙盒文档目录中时,这可以正常工作。但是,用户也可以打开沙箱外的文件。重新启动应用程序时,由于沙箱权限而无法打开这些文件,因此该文件无法读取。我明白通常用户必须从打开的对话框中选择out-of-sandbox文件。

这些文件位于“最近的文件”列表中,可以这样打开。

必须有一种方法可以做到这一点,因为这是大多数文本编辑器的工作方式。是否有神奇的权利或我失踪的电话?

1 个答案:

答案 0 :(得分:2)

您需要安全范围的书签。

查看Apple Security-Scoped Bookmarks and Persistent Resource AccessApp Sandbox Design Guide部分。

  

您的应用可以访问其容器外的文件系统位置   通过用户意图授予您的应用程序,例如通过   Powerbox不会在应用启动或系统中自动保留   重新启动。当您的应用重新开启时,您必须重新开始   ...
  从OS X v10.7.3开始,您可以保留对文件系统资源的访问权限   采用安全机制,称为安全范围的书签,   保留用户意图。

我在这里总结一下,但上面的链接包含了你需要的一切。