我使用NSMetadataQuery来检测我的应用程序iCloud容器上是否存在文档,即使该文件尚未在本地下载。
带有NSFilePresenter的NSFileCoordinator也能做到这一点吗?验证文件是否存在,即使该文件在本地仍不可用?
更新:我已经使用NSMetadataQuery来检测文件是否存在于我的ubiquity容器中。但至少在10.8.2上测试,它并不总是有效的。因为文件的存在,我得到了很多假阴性。
我知道其他人一直在使用我相信的文件协调器。有没有人对此有什么看法,或者更好地给我举一个如何使用它们的例子?
发布于 2012-09-26 15:09:13
发送一条消息到NSFileCoordinator的coordinateReadingItemAtURL:options:error:byAccessor:方法,并在byAccessor块中用它的urlToUse做你想做的事情(并通过查看错误来检查错误结果)应该是可行的,如果你在iCloud中已经有了一个有效的URL,你一直试图使用NSMetadataQuery查询它。
您可以使用initWithPresenter:nil创建NSFileCoordinator,它将适用于所有文件呈现程序。
因此,这似乎是一个问题,你是否已经知道你正在搜索的项目的URL。在创建NSPredicate方面,使用NSMetadataQuery显然会更方便,当您还不知道它们的URL时,它将返回iCloud ubiquity容器中的项的枚举。
(我不能帮助解释你的假阴性,尽管我倾向于检查你正在为你查询的文件创建的NSPredicate,或者我想看看你是否已经为NSMetadataQueryDidUpdateNotification和NSMetadataQueryDidFinishGatheringNotification设置了通知,并且你没有取消它们。)
https://stackoverflow.com/questions/11213532
复制相似问题