如何确定卷是否支持垃圾桶?

vag*_*ant 5 macos cocoa

我正在编写一个将删除文件的应用程序。如果该卷支持“废纸folder”文件夹,我想将文件移到那里,否则只需将其删除即可。

可能是我的搜索莫霍奇失败了,但我找不到如何做到这一点。

这里的目的是做类似(伪代码)的事情:

if (itemURL on volume that supports Trash)
    use trashItemAtURL:resultingItemURL:error:
else
    use removeItemAtURL:error:
Run Code Online (Sandbox Code Playgroud)

我知道recycleURLs:completionHandler:但是,例如对于SMB卷,它会弹出一个对话框,说明如何立即删除文件。我想单独处理文件,以便更新显示。我想我可以使用recycleURLs:completionHandler:如果文件系统事件可以在SMB卷上运行,但我不确定它们是否可以运行。

Anyhoo ..是否缺少某些API或我似乎找不到的某些推荐技术?

vag*_*ant 4

苹果开发论坛的一位好心人找到了答案:

来自 10.8 Foundation 发行说明:

NSFileManager 垃圾箱 API 在 Mac OS 10.8 中,NSFileManager 有新的方法来管理垃圾箱。-[NSFileManagerrashItemAtURL:resultingItemURL:error:] 将尝试将给定 URL 处的项目移动到垃圾箱,并通过引用返回结果 URL。作为此操作的一部分,系统可能会重命名文件以避免名称冲突;如果是这样,resultingItemURL 将反映这个新名称。

[剪]

某些卷可能不支持垃圾文件夹,因此这些方法将通过返回 NO 或 nil 以及带有 NSFeatureUnsupportedError 的 NSError 来报告失败。NSFeatureUnsupportedError 是 NSCocoaErrorDomain 中的一个新错误代码,表示由于不支持该功能而无法执行请求的操作,原因可能是文件系统缺少该功能,或者缺少所需的库,或者其他类似的原因。

不知道为什么该文档从未出现在搜索中。