我正在编写一个将项目放置在上下文菜单中的FinderSync扩展程序。当我右键单击时,我希望菜单项的标题根据所选文件的内容更改。但是,当我尝试使用Data(contentsOf: selectedUrl)
读取内容时,它会引发以下错误:
错误域= nscocoaerrordomain code = 257"文件"某些file.png"无法打开,因为您没有权限查看它。"userInfo = {nsfilepath =/user/shared/mySyncextension documents/soming file.png,nsunderlyingerror = 0x6180000004cf00 {error domain = nsposixorrordomain code = 1
如果我添加或删除沙盒,这不会更改。
先前的研究
- 由于您没有许可查看该文件,因此无法打开该文件
- 编译器始终设置为默认值
- 在沙盒环境中读取并写入findersync扩展的访问
- 启用了权利。另外,这表现出了沙箱的关闭。
- "文件无法打开,因为您没有权限查看它。"|苹果官方支持社区
- 文件的权限说"每个人"只读取"访问"
问题是沙箱阻止文件访问该文件,因此您的应用程序无法打开。
在沙盒环境中读取并写入findersync扩展的访问
即使Finder Sync应用程序扩展名被授予"用户选择的文件"沙盒文件访问,但通过右键单击的用户访问的文件似乎不算为"用户选择"。
可能可以通过PowerBox通过NSOPENPANEL来指导用户通过PowerBox选择一个根目录,然后可以通过安全性的书签访问所有子目录。
使用临时例外权利也可能是可能的,但会引起应用程序审查问题:
有什么方法可以给我的沙盒Mac应用程序读取仅在〜/library中访问文件?
请复制我的苹果错误报告,要求此行为:
查找器同步应用扩展
selectedItemURLs()
应接收"用户选择的文件"沙盒文件访问。rdar://42874694
https://openradar.appspot.com/radar?id=5063363058991104