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

标签 ios icloud nsmetadataquery nsfilecoordinator

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

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

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

我知道其他人一直在使用我相信文件协调器。 有谁对此有什么意见,或者更好地向我指出一个如何使用它们的示例?

最佳答案

正在发送消息至NSFileCoordinatorcoordinateReadingItemAtURL:options:error:byAccessor:方法并在 byAccessor 中做你想做的事 block 及其 urlToUse (并通过查看错误来检查错误结果)如果您已经在 iCloud 中拥有您尝试使用 NSMetadataQuery 查询的项目的有效 URL,则应该可以工作。 .

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

所以这似乎是一个你是否已经知道你正在搜索的项目的 URL 的问题。使用NSMetadataQuery显然在创建 NSPredicate 方面会更方便当您还不知道其 URL 时,这将为您返回 iCloud 普遍存在容器中项目的枚举。

(我无法帮助解释您的误报,尽管我倾向于检查您正在为您正在查询的文件创建的NSPredicate,或者我会看看您是否设置了通知NSMetadataQueryDidUpdateNotificationNSMetadataQueryDidFinishGatheringNotification 都已注册,并且您尚未取消它们。)

关于ios - 验证 iCloud 容器上的文档是否存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11213532/

相关文章:

用于场交错 H264 的 ios vtb 解码器

ios - 保存、更新或对 iCloud 的任何操作不适用于临时或应用商店配置文件

ios - 在 IOS 中使用 iCloud 导出和导入文档

nspredicate - 如何过滤 NSMetadataQuery

ios - 如何确定 iCloud 文件夹中是否存在文件?

macos - 如何对 NSMetadataQuery 的结果进行分组

ios - 我可以通过编程方式选择分层 UITableView 结构中的详细信息页面吗?

ios - 在 Xamarin iOS 的 UIActivityIndi​​catorView 中隐藏指示器

ios - 保存 iOS 8 自定义键盘的首选项

ios - CoreData iCloud 更改未保存