3

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

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

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

4

1 回答 1

2

你的大纲是正确的。

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

或者,您可以为 /Volumes 本身设置一个 NSOpenPanel - 让您的用户授予您对该目录的访问权限。如果你这样做一次然后保存一个书签,你的用户就不应该被很多恼人的打开对话框所击中。一旦您有权访问 /Volumes,您的应用程序可以在需要时允许选择卷的子集。

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

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

高温高压

于 2013-05-18T04:27:46.907 回答