在Mac和iPhone之间同步核心数据模型
我目前正在构建我的核心数据模型,我想在我的应用程序的Mac和iPhone版本之间进行同步 我将使用Bonjour进行设备发现等,但我对问题中的数据同步部分有疑问 到目前为止,我已经为同步中涉及的每个对象添加了UID和修改时间戳,因此我应该能够匹配对象并检测哪些对象已经更改 关于为这种情况编写同步代码(即在一个模型的两个实例之间同步记录),是否有好的链接和参考资料 同步是一个相当多的边缘案例的问题,在过去人们已经解决了很多次,所以我希望找到一些关于这个主题的信息,但我能找到的只是苹果的同步服务(iPhone上不存在)和一些MS Sync技术的链接在Mac和iPhone之间同步核心数据模型,iphone,objective-c,macos,core-data,sync,Iphone,Objective C,Macos,Core Data,Sync,我目前正在构建我的核心数据模型,我想在我的应用程序的Mac和iPhone版本之间进行同步 我将使用Bonjour进行设备发现等,但我对问题中的数据同步部分有疑问 到目前为止,我已经为同步中涉及的每个对象添加了UID和修改时间戳,因此我应该能够匹配对象并检测哪些对象已经更改 关于为这种情况编写同步代码(即在一个模型的两个实例之间同步记录),是否有好的链接和参考资料 同步是一个相当多的边缘案例的问题,在过去人们已经解决了很多次,所以我希望找到一些关于这个主题的信息,但我能找到的只是苹果的同步服务(i
我真的在寻找一般的理论,这样我就可以自己实现它,不一定是现成的解决方案。SyncML规范可能会有所帮助,但它很难阅读,而且显然偏向于SyncML 我必须为Task Coach实现这一点,因此以下是一些想法: 修改标志就足够了,时间戳并不能提供更多的信息。通常,我的对象处于以下状态之一:
- 没有
- 新的
- 删除
- 修改
- 无->修改
- 新建->新建
- 已删除->(不应发生)
- 修改->修改
- 无->删除
- 新建->实际删除(可能从存储器中删除)
- 已删除->(不应发生)
- 修改->删除
- 修改/删除。如果用户选择信任设备,桌面对象将替换为设备对象;否则,桌面将不执行任何操作并保持已删除状态,以便在第2阶段将对象从设备中删除
- 删除/修改:如果设备获胜,则该对象实际上已从桌面上删除。否则,对象将在桌面上进入新状态,以便在第2阶段在设备上恢复
- 删除/删除:Duh。只需将其从存储器中取出即可
- 修改/修改:用户决定保留哪些值,可能是基于字段。桌面上的状态保持为“已修改”,以便在第2阶段将这些选择传播回设备
HTHMarcus Zarra创建了一个名为简化iPhone/iPad应用程序与Mac应用程序同步的框架。看一看,这可能有助于解决问题 时间戳有助于区分两个设备上的并发编辑。如果你只是使用布尔“修改”标志,那么很难知道哪一个是最新的数据。感谢fraca7,这正是我想要的。我还将查看SyncML文档,看看它们是否涉及此类细节。还有其他建议吗?AlBlue:如果你想要某种自动解决冲突的方法,我宁愿问用户。如果两个记录都被修改了,他应该是决定者。将近一年后,我认为fraca7的回答最接近地回答了这个问题,尽管在这种情况下,我希望Marcus Zarra的ZSync框架能为我处理大部分问题。谢谢大家。谢谢约翰,我关注ZSync已经有一段时间了,我只是想先看看它在现实世界的应用程序中表现如何。这看起来是一个很棒的项目,可以很好地满足我的需求