CoreData + iCloud同步时序令人困惑

时间:2016-03-31 09:12:02

标签: objective-c core-data icloud

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

2 个答案:

答案 0 :(得分:0)

没有直接的方法来控制时序,但是在通过save:方法提交托管对象上下文的更改之前,不执行本地iCloud同步

答案 1 :(得分:0)

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

您希望区分"本地文档"以及"云文档"。正如评论中所提到的,这类似于反概念。但是,有两种策略可以实现这一目标。它们都没有经过我的测试。

  1. 请勿保存您在内存中所做的更改。

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

  3. 两种变体都有一个很大的缺点:如果你延迟保存(同步)文档的时间,可能本地版本和无处不在的版本会越来越多地运行。这可能导致无法解决的冲突。 是的一个原因,Apple建议尽快并尽快保存商店(=将其公开)。顺便说一句:使用iCloud synch的核心数据不是组件。甚至不要试图这样使用它。