验证iCloud容器上的文档是否存在

时间:2012-06-26 18:16:30

标签: ios icloud nsmetadataquery nsfilecoordinator

我正在使用NSMetadataQuery来检测我的应用程序iCloud容器上是否存在文档,即使该文件尚未在本地下载。

带有NSFilePresenter的NSFileCoordinator可以这样做吗?验证文件是否存在,即使它仍然在本地不可用?

更新: 我已经使用了一段时间NSMetadataQuery来检测我的普遍容器中是否存在文件。但至少在10.8.2上测试,它并不总是有效。我对文件的存在已经收到了很多漏报。

我知道其他人一直在使用我相信文件协调员。 有没有人对此有任何意见,或者更好地指出一个如何使用它们的例子?

1 个答案:

答案 0 :(得分:2)

NSFileCoordinator的{​​{1}}方法发送消息并使用coordinateReadingItemAtURL:options:error:byAccessor:byAccessor块中执行您想要的操作(并通过查看错误来检查错误结果) )如果你已经在iCloud中拥有了一个有效的URL,那么你应该尝试使用urlToUse进行查询。

您可以使用NSMetadataQuery创建NSFileCoordinator,它适用于所有文件展示者。

所以看来你是否已经知道你正在搜索的项目的URL是一个问题。在创建initWithPresenter:nil时,使用NSMetadataQuery显然会更方便,当您还不知道他们的网址时,会在iCloud ubiquity容器中返回项目的枚举。

(我无法解释你的假阴性,虽然我倾向于检查你正在为你正在查询的文件创建NSPredicate,或者我想看看你是否有为NSPredicateNSMetadataQueryDidUpdateNotification设置的通知以及您尚未取消的通知。)