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

Posted

技术标签:

【中文标题】验证 iCloud 容器上的文档是不是存在【英文标题】:Verify document existence on iCloud container验证 iCloud 容器上的文档是否存在 【发布时间】:2012-06-26 18:16:29 【问题描述】:

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

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

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

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

【问题讨论】:

【参考方案1】:

如果您已经拥有一个您尝试使用 NSMetadataQuery 查询的 iCloud 中项目的有效 URL。

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

因此,您是否已经知道要搜索的项目的 URL 似乎有点问题。在创建NSPredicate 方面,使用NSMetadataQuery 显然会更方便,当您还不知道它们的URL 时,它将返回您的iCloud 通用容器中的项目的枚举。

(我无法帮助解释您的误报,尽管我倾向于检查您正在为您正在查询的文件创建的NSPredicate,或者我会查看您是否设置了通知为NSMetadataQueryDidUpdateNotificationNSMetadataQueryDidFinishGatheringNotification 准备好了,而且你还没有取消它们。)

【讨论】:

以上是关于验证 iCloud 容器上的文档是不是存在的主要内容,如果未能解决你的问题,请参考以下文章

删除 iCloud 容器内容

如何针对 iCloud 验证 iCloud ID 令牌?

关闭 iCloud 并从无处不在的容器中删除项目

Laravel 验证 - 如何检查给定数组中是不是存在值?

使用身份验证服务访问 iCloud 日历

来自 WKWebview 的 iCLoud 文档选择器关闭容器视图