FinderSync 扩展运行时错误:无法打开该文件,因为您无权查看它
Posted
技术标签:
【中文标题】FinderSync 扩展运行时错误:无法打开该文件,因为您无权查看它【英文标题】:FinderSync Extension runtime error: The file couldn’t be opened because you don’t have permission to view it 【发布时间】:2017-06-07 15:50:11 【问题描述】:我正在编写一个 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"
如果我添加或删除沙盒,这不会改变。
先前的研究
The file couldn’t be opened because you don’t have permission to view it 编译器一直设置为默认值 Read and Write access for FinderSync extension in a sandboxed environment 授权已启用。此外,这会在沙盒关闭的情况下表现出来。 "File could not open because you do not have permission to view it." | Official Apple Support Communities 文件的权限显示“每个人”都具有“只读”访问权限【问题讨论】:
【参考方案1】:问题是沙盒阻止文件访问文件,因此您的应用无法打开它。
Read and Write access for FinderSync extension in a sandboxed environment
即使 Finder Sync 应用程序扩展被授予“用户选择的文件”沙盒文件访问权限,用户通过右键单击访问的文件似乎不算是“用户选择的”。
或许可以引导用户到select a root directory via an NSOpenPanel via Powerbox, after which all subdirectories can be accessed via a security-scoped bookmark。
使用临时例外权利也是可能的,但会导致 App Review 问题:
Is there any way to give my sandboxed Mac app read only access to files in ~/Library?
请复制我的 Apple 错误报告,要求允许此行为:
Finder Sync 应用程序扩展
selectedItemURLs()
应该接收“用户选择的文件”沙盒文件访问权限。rdar://42874694https://openradar.appspot.com/radar?id=5063363058991104
【讨论】:
以上是关于FinderSync 扩展运行时错误:无法打开该文件,因为您无权查看它的主要内容,如果未能解决你的问题,请参考以下文章
Finder Sync 扩展:无法通过 UNIX 域套接字进行通信