检查 iCloud 中现有数据的最佳方法是什么?
我需要检查本地设备或 iCloud 上是否不存在数据,以便我可以下载它。
由于您包含了core-data
标签,我假设您的意思是您使用的是 Core Data,而不是 iCloud 文件 API 或无处不在的键值存储。
借助 Core Data 内置的 iCloud 支持,您可以像不使用 iCloud 一样检查现有数据。创建核心数据堆栈后,您可以通过正常的核心数据获取来检查存在哪些数据。没有(公开的)本地数据与云数据的概念,只有一个数据存储恰好知道如何与 iCloud 通信。您无需明确启动下载——它们会自动发生。
在您调用 应用程序启动时addPersistentStoreWithType:configuration:URL:options:error:
,Core Data 会在内部启动下载任何本地尚不可用的数据。因此,此方法可能会阻塞一段时间。如果它成功返回,则可以假定所有当前下载已完成。
如果在您的应用程序运行时出现新的更改,Core Data 将下载并导入它们,并在完成后发布NSPersistentStoreDidImportUbiquitousContentChangesNotification
通知您刚刚发生的情况。
这一切都描述了 Core Data 的 iCloud应该如何工作。在实践中,您可能会发现它并不总是按预期工作。
感谢@Tom Harrington 指出,此错误与开发人员/编码无关 - 它纯粹与 iCloud/Apple/连接问题有关。
关于我找到的这个SO 答案的更多信息。