我正在使用 NSMetadataQuery 来检测我的应用程序 iCloud 容器上是否存在文档,即使该文件尚未下载到本地也是如此。
带有 NSFilePresenter 的 NSFileCoordinator 可以做同样的事情吗?即使文件在本地仍然不可用,也要验证该文件是否存在?
更新: 我已经使用 NSMetadataQuery 一段时间来检测我的普遍容器中是否存在文件。但至少在 10.8.2 上测试,它并不总是有效。我收到了很多有关文件存在的误报。
我知道其他人一直在使用我相信文件协调器。 有谁对此有什么意见,或者更好地向我指出一个如何使用它们的示例?
最佳答案
正在发送消息至NSFileCoordinator
的coordinateReadingItemAtURL:options:error:byAccessor:
方法并在 byAccessor
中做你想做的事 block 及其 urlToUse
(并通过查看错误来检查错误结果)如果您已经在 iCloud 中拥有您尝试使用 NSMetadataQuery
查询的项目的有效 URL,则应该可以工作。 .
您可以创建 NSFileCoordinator
使用initWithPresenter:nil
,并且它将适用于所有文件演示者。
所以这似乎是一个你是否已经知道你正在搜索的项目的 URL 的问题。使用NSMetadataQuery
显然在创建 NSPredicate
方面会更方便当您还不知道其 URL 时,这将为您返回 iCloud 普遍存在容器中项目的枚举。
(我无法帮助解释您的误报,尽管我倾向于检查您正在为您正在查询的文件创建的NSPredicate
,或者我会看看您是否设置了通知NSMetadataQueryDidUpdateNotification
和 NSMetadataQueryDidFinishGatheringNotification
都已注册,并且您尚未取消它们。)
关于ios - 验证 iCloud 容器上的文档是否存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11213532/