我一直在研究一种在多个设备(例如 iPad 或 Mac)之间同步存储在 iPhone 应用程序中的核心数据的方法。iOS 上与 Core Data 一起使用的同步框架并不多(如果有的话)。但是,我一直在思考以下概念:
我需要考虑什么花哨的事情吗?我看过 REST 框架,例如ObjectiveResource、Core Resource和RestfulCoreData。当然,这些都与 Ruby on Rails 一起工作,我不依赖于它,但它是一个开始的地方。我对解决方案的主要要求是:
我考虑了一些挑战:
还有什么我在这里想念的吗?我应该看什么样的框架才能使这成为可能?
我建议仔细阅读并实施 Dan Grover 在 iPhone 2009 大会上讨论的同步策略,此处提供 pdf 文档。
这是一个可行的解决方案,实现起来并不难(Dan 在其几个应用程序中实现了这一点),与 Chris 描述的解决方案重叠。有关同步的深入理论讨论,请参阅 Russ Cox (MIT) 和 William Josephson (Princeton) 的论文:
与向量时间对的文件同步
这同样适用于核心数据,但有一些明显的修改。这提供了一个整体上更加健壮和可靠的同步策略,但需要更多的努力才能正确实施。
编辑:
Grover 的 pdf 文件似乎不再可用(断开的链接,2015 年 3 月)。更新:该链接可通过此处的 Way Back Machine 获得
由 Marcus Zarra 开发的名为ZSync的 Objective-C 框架已被弃用,因为 iCloud 似乎最终支持正确的核心数据同步。