在我的一个应用程序中,我想通过CloudKit启用同步。该应用程序本身使用CoreData存储数据。我无法使用CoreData + iCloud,因为我需要能够跟踪使用上述设置无法进行的更改。
我面临的明显挑战与CloudKit操作将在后台线程上发生这一事实有关,因此我需要支持CoreData堆栈的并发性。
假设我有一些要与CloudKit同步的CoreData实体。要进行后台同步,我需要创建一个单独的托管对象上下文。当此上下文获取在其他设备上对我的实体所做的更改时,我要保存这些更改。
但是,问题在于,在执行提取操作期间,用户可能已经更改了给定实体的某些属性,而我现在仍然坚持在两个上下文中都具有一些重要信息的实体。我不能只选择保存哪一个-我需要合并更改。
不幸的是,我不知道我需要采取哪种方法才能手动同步这些更改。我已经检查了可能的技术(亲子,多个上下文,多个商店协调员),但是我仍然不明白我需要选择哪种方法。
有人可以帮助我解决这种困惑吗?
对我来说,最理想的解决方案是,每当同步上下文尝试将更改合并到也有一些更改的主上下文时,我都会遇到冲突。在这种情况下,我可以轻松决定应该更新哪些属性,但是我真的不知道该如何完成...
最佳答案
在Apple WWDC 2014中,他们就此进行了一次会议。这是笔录,您也可以轻松找到视频;承担您的Apple开发人员。
http://asciiwwdc.com/2014/sessions/231
简而言之,苹果工程师介绍了一个使用更改令牌的非常简单的示例。解决解决数据更改冲突问题的行业标准解决方案。
Ray Wenderlich网站在云工具包和核心数据上也有一些出色的VIDEO,它是一项订阅服务,尽管物有所值,每月仅20美元,而且我与他没有任何关系。我只是一个订阅者。谷歌他,你找到他的网站。
关于ios - CoreData并发(用于与CloudKit同步),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35690163/