3

我正在编写一个 FinderSync 扩展,它将一个项目放在上下文菜单中。当我右键单击时,我希望菜单项的标题根据所选文件的内容进行更改。但是,当我尝试使用 读取内容时Data(contentsOf: selectedUrl),会引发以下错误:

Error Domain=NSCocoaErrorDomain Code=257 “无法打开文件“Some File.png”,因为您没有查看权限。” UserInfo={NSFilePath=/Users/Shared/MySyncExtension Documents/Some File.png, NSUnderlyingError=0x61800004cf00 {Error Domain=NSPOSIXErrorDomain Code=1 "Operation not allowed"}}

如果我添加或删除沙盒,这不会改变。


先前的研究

4

1 回答 1

2

问题是沙盒阻止文件访问文件,因此您的应用程序无法打开它。

沙盒环境中 FinderSync 扩展的读写访问权限

即使 Finder Sync 应用程序扩展被授予“用户选择的文件”沙盒文件访问权限,用户通过右键单击访问的文件似乎不算是“用户选择的”。

可以通过 Powerbox 引导用户通过 NSOpenPanel 选择根目录,之后可以通过安全范围的书签访问所有子目录

使用 Temporary Exception 权利也是可能的,但会导致 App Review 问题:

有没有办法让我的沙盒 Mac 应用程序只读访问 ~/Library 中的文件?

请复制我的 Apple 错误报告,要求允许此行为:

Finder Sync App ExtensionselectedItemURLs()应该接收“用户选择的文件”沙盒文件访问权限。

rdar://42874694
https://openradar.appspot.com/radar?id=5063363058991104

于 2018-08-02T21:33:13.870 回答