0

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

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

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

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

4

1 回答 1

2

如果您已经在 iCloud 中拥有您一直在尝试的项目的有效 URL,则向NSFileCoordinator' 的方法发送消息并使用它在块coordinateReadingItemAtURL:options:error:byAccessor:中执行您想要的操作(并通过查看错误检查错误结果)应该可以工作查询使用。byAccessorurlToUseNSMetadataQuery

并且您可以创建NSFileCoordinatorusing initWithPresenter:nil,它将适用于所有文件演示者。

因此,您是否已经知道要搜索的项目的 URL 似乎有点问题。usingNSMetadataQuery显然会更方便地创建一个NSPredicate,当您还不知道它们的 URL 时,它将为您返回 iCloud 普遍存在容器中的项目的枚举。

(我无法帮助解释您的误报,尽管我倾向于检查NSPredicate您正在为您要查询的文件创建的内容,或者我会查看您是否为NSMetadataQueryDidUpdateNotification&NSMetadataQueryDidFinishGatheringNotification和那个设置了通知你还没有取消它们。)

于 2012-09-26T07:09:12.917 回答