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

标签 objective-c macos cocoa sandbox

我的应用读取 iTunes 下的 XML 库文件

/Users/username/Music/iTunes/iTunes Music Library.xml

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

这是使用 NSOpenPanel 完成的。

但是,现在我必须在用户每次打开应用程序时请求用户访问此文件的权限,这非常烦人。

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

编辑

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

最佳答案

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

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

就是这样。您需要阅读Apple's documentation了解详细信息。

关于objective-c - 在沙箱中重新启动后访问同一文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16842316/

相关文章:

objective-c - 在 Cocoa 中动态加载窗口的一部分

iOS URL Scheme - 在我的应用程序中加载自定义 UIView

macOS SecureTransport 拒绝导入 OpenSSL 接受的证书

swift - 确定是否可以安全地杀死 Finder

python - 如何在 OS X 上运行 Hadoop?

css - Cocoa webview UserAgent "webkit-legacy"问题

iphone - 使用 cocoaasyncsocket 框架读取 varint

cocoa - 如何以编程方式关闭字体面板?

objective-c - 意外的 "Expected Identifier"错误

ios - 在 objective-c 中本地或 firebase 录制后如何保存音频文件?