【发布时间】:2020-09-02 17:56:21
【问题描述】:
我有一个应用程序正在尝试迁移到使用 CloudKit 来存储核心数据,以便它可以跨设备同步。
同步工作正常,我遇到的问题是应用程序向数据库添加了一些初始数据,这导致它在安装到另一台设备上时被复制。目前,如果第一次运行已经执行,我正在使用用户默认值在本地存储布尔值,这显然只适用于每个设备
有什么方法可以查看数据是否已经存在于云端并阻止添加初始数据。
如果对象已经存在但首次启动时本地商店中没有对象,Apple 的文档会建议这样做。 https://developer.apple.com/documentation/coredata/mirroring_a_core_data_store_with_cloudkit/reading_cloudkit_records_for_core_data
【问题讨论】:
-
如果我在关注这个问题......我通常会做一个 CloudKit 查询来检查数据是否存在,如果存在,设置本地存储,但不要保存数据到 CloudKit,因此您可以避免重复。如果它不存在,那么您可以安全地继续。
-
如何查询?有很多非核心数据示例,但找不到核心数据示例
-
也许我现在搞混了:)。但我认为问题在于 CloudKit 查询以查看数据是否在 CloudKit 中 - 或者您是说问题是 CoreData?如果您可以提供更多颜色,我很乐意举个例子。
-
目前,设备 1 有一个新安装,用于设置应用使用的初始数据。这会同步到 CloudKit。然后设置设备 2,这将进行数据的初始设置,与设备 1 相同,但它也会同步设备 1 已经同步的初始数据。在进行初始设置之前,我正在考虑查询 CloudKit 并查看那里是否有任何数据
标签: swift core-data cloudkit nspersistentcloudkitcontainer