我正在使用NSMetadataQuery来检测我的应用程序iCloud容器上是否存在文档,即使该文件尚未在本地下载。
带有NSFilePresenter的NSFileCoordinator可以这样做吗?验证文件是否存在,即使它仍然在本地不可用?
更新: 我已经使用了一段时间NSMetadataQuery来检测我的普遍容器中是否存在文件。但至少在10.8.2上测试,它并不总是有效。我对文件的存在已经收到了很多漏报。
我知道其他人一直在使用我相信文件协调员。 有没有人对此有任何意见,或者更好地指出一个如何使用它们的例子?
答案 0 :(得分:2)
向NSFileCoordinator
的{{1}}方法发送消息并使用coordinateReadingItemAtURL:options:error:byAccessor:
在byAccessor
块中执行您想要的操作(并通过查看错误来检查错误结果) )如果你已经在iCloud中拥有了一个有效的URL,那么你应该尝试使用urlToUse
进行查询。
您可以使用NSMetadataQuery
创建NSFileCoordinator
,它适用于所有文件展示者。
所以看来你是否已经知道你正在搜索的项目的URL是一个问题。在创建initWithPresenter:nil
时,使用NSMetadataQuery
显然会更方便,当您还不知道他们的网址时,会在iCloud ubiquity容器中返回项目的枚举。
(我无法解释你的假阴性,虽然我倾向于检查你正在为你正在查询的文件创建NSPredicate
,或者我想看看你是否有为NSPredicate
和NSMetadataQueryDidUpdateNotification
设置的通知以及您尚未取消的通知。)