CoreData并发(用于与CloudKit同步)

时间:2016-02-29 00:33:25

标签: ios swift core-data concurrency cloudkit

在我的某个应用中,我想通过CloudKit启用同步。应用程序本身使用CoreData存储数据。我无法使用CoreData + iCloud,因为我需要能够跟踪上述设置无法实现的更改。

我遇到的明显挑战是CloudKit操作将在后台线程上发生,因此我需要支持我的CoreData堆栈的并发性。

让我们假设我有一些我希望与CloudKit同步的CoreData实体。要进行后台同步,我需要创建一个单独的托管对象上下文。当此上下文获取在其他设备上对我的实体所做的更改时,我想保存这些更改。

然而,问题是在执行fetch期间,用户可能已经改变了某个给定实体的某些属性,而我现在仍然坚持使用这个实体在两个上下文中都有一些重要信息。我不能只选择保存哪一个 - 我需要合并更改。

不幸的是,我不明白我需要采取哪种方法才能手动同步这些更改。我已经检查了可能的技术(父子,多个上下文,多个商店协调员),但我仍然不了解我需要选择哪种方法。

有人可以帮助我解决这种困惑吗?

对我来说最理想的解决方案就是每当同步上下文尝试将更改合并到主上下文时也会发生冲突,这也会发生一些变化。在这种情况下,我可以轻松决定应该更新哪些属性,但我真的不知道如何做到这一点...

1 个答案:

答案 0 :(得分:0)

在Apple WWDC 2014中,他们就此实施了一次会议。这是成绩单,您也可以轻松找到视频;假设您的Apple开发人员。

http://asciiwwdc.com/2014/sessions/231

简而言之,Apple工程师使用更改令牌的一个非常简单的例子;解决数据变更冲突问题的行业标准解决方案。

Ray Wenderlich网站上也有一些关于云套件和核心数据的优秀VIDEO,这是一项订阅服务,虽然每月只需20美元,但我没有与他有任何关系;我只是一个订阅者。谷歌他和你找到他的网站。