Swift macOS 的桌面沙盒问题

Desktop Sandboxing Issue with Swift macOS

我最近一直在尝试编写 Mac 应用程序,但 运行 遇到了问题。这不是太重要,但如果有解决方案就太好了。

我必须在 运行 时间加载图像,由用户指定(所以不,我不能将图像嵌入包中,因为 many 替代方案建议) ,并使用 NSAttributedText 将其嵌入到 NSTextView 中。图像从图片目录 (/Users/USERNAME/Pictures/IMAGE) 等加载正常,但不是从桌面加载。我检查了 Xcode 中的功能选项卡,并且 Read/Write 已为所有可用选项启用:image

使用 FileManager,我确定该文件确实存在,但不可读。我可以在授权文件中手动设置吗?

提前致谢。

不,你不能。如果应用程序被沙盒化,则标准桌面无法立即访问。只有标准的 DownloadsPicturesMusicMovies 文件夹可以使用相应的权限访问。

有两个选项可以访问其他文件夹,但在所有情况下,用户必须选择一次

  • Open/Save 如果设置了适当的授权,用于临时访问的对话框。
  • 用于永久访问的安全范围书签,但在这种情况下,用户必须首先通过 Open/Save 对话框选择一次文件夹,并且必须以编程方式创建安全范围书签。