【发布时间】:2014-11-28 17:10:02
【问题描述】:
我可以让我的 Mac 应用程序读取桌面的内容,但每当我尝试删除一个文件时,它就会说我没有这样做的权限。如果用户有权访问桌面,我是否应该能够删除文件?
- 沙盒已开启
- 文件访问权限设置为用户选择的文件的读/写。
- 安全范围的书签正在工作,因为我对文件具有读取权限,并且它只出现一次授权提示。
这是我用来删除的代码:
[[NSWorkspace sharedWorkspace] performFileOperation:NSWorkspaceRecycleOperation
source:desktopPath
destination:@""
files:self.filesToDelete
tag:nil];
我也尝试过使用 fileManager 的垃圾箱方法,但没有成功。
这是从 fileManager 回收站方法返回的错误:
Error Domain=NSCocoaErrorDomain Code=513 "“file.png” couldn’t be moved to the trash because you don’t have permission to access it." UserInfo=0x60000026a980 {NSURL=file:///Users/me/Desktop/file.png, NSUserStringVariant=(
Trash
), NSUnderlyingError=0x600000257ca0 "The operation couldn’t be completed. (OSStatus error -5000.)"}
以及实际的垃圾方法调用:
[[NSFileManager defaultManager] trashItemAtURL:url resultingItemURL:nil error:&error];
【问题讨论】:
-
是的,当用户授予您权限并且用户可以手动执行此操作时,您的应用程序 (AFAIK) 也应如此
-
这就是我的想法,那么为什么我会收到这个错误?如果我可以读取文件,我不应该能够删除它们吗?见上面的错误
-
不,如果您可以阅读它们并不意味着您可以删除它们。该错误表明没有沙盒错误
标签: macos cocoa sandbox nsfilemanager