沙盒和安全范围的书签

时间:2013-05-17 19:54:23

标签: macos cocoa app-store sandbox

我正在编写一个跟踪磁盘使用情况的应用。为此,我让用户选择驱动器(表示为以/ volume开头的URL)。我使用核心数据保存信息。现在我想实现沙盒,我不确定如何继续。没有开箱即用的权利可以让我访问这条路径。据我所知,我需要......

  • 让用户选择一个特定路径(驱动器),以便访问应用程序目录外的那些文件
  • 为了让这些选定路径在应用启动过程中保持不变,我需要创建安全范围的书签。
  • 我想我可以将这些作为NSData保存在Core Data对象(二进制类型)
  • 在应用启动后,再次“解析”这些安全范围的书签以重新获得访问权。

这有意义吗?我在这里错过了什么吗?您可以提供任何提示/提示吗?

1 个答案:

答案 0 :(得分:2)

你的大纲是正确的。

要让用户选择驱动器,您可以创建一个以/ Volumes开头的NSOpenPanel。您可以使用委托仅允许选择该目录中的项目,因此即使用户导航,他们也无法选择其他任何内容。自定义对话框中的各种消息,使其成为“选择卷”对话框。

或者你可以为/ Volumes本身建立一个NSOpenPanel - 让你的用户授予你访问该目录的权限。如果您这样做一次然后保存书签,您的用户不应该被许多烦人的打开对话框击中。一旦您有权访问/ Volumes,您的应用就可以根据需要选择一部分卷。

警告:虽然可以访问整个目录,但如果您打算将应用程序放入App Store,您可能会发现Apple认为您向用户要求过多。您可能希望从对该目录的只读访问开始,如果他们将其重新放回到选择单个磁盘 - 只需做好准备。

您还可以将书签存储在plist(容器内)或用户默认值中,您需要确定这些书签是否比Core Data更好。

HTH