CoreData + iCloud Sync 时序混乱

CoreData + iCloud Sync timing confusing

我的问题是如何控制CoreData(本地数据库)与iCloud同步的时间。据我所知,如果我更改本地数据,iCloud 会自动更改。在我准备好之前,iCloud 可能会与本​​地同步数据吗?

没有直接的方法来控制时间,但是在通过 save: 方法

提交托管对象上下文的更改之前,不会执行本地 - iCloud 同步

有一种两步同步。您的本地数据首先放入容器中进行同步,然后容器与 iCloud 同步。这是由恶魔系统范围内完成的。你无法控制它。

您想区分 "local document" 和 "cloud document"。正如评论中提到的,这类似于反观念。但是,有两种策略可以做到这一点。 None 个是我测试的。

  1. 不要将所做的更改保存在内存中。

  2. 添加商店的本地版本并使用 migratePersistentStore:toURL:options:withType:error: (NSPersistentStoreCoordinator) 在本地版本和同步版本之间迁移。

这两种变体都有一个很大的缺点:如果您延迟保存(同步)文档的时间,本地版本和无处不在的版本可能会越来越远 运行。这可能会导致无法解决的冲突。 是 Apple 建议尽快并尽可能多地保存商店的原因(=使其成为 public)。顺便说一句:带有 iCloud 同步功能的 Core Data 不是群件。甚至不要尝试以这种方式使用它。