0

通过 iOS 教程,看起来 Simperium 的工作方式与 iCloud Core Data 非常相似,因为它在后台透明地同步并将更改写入底层持久存储并合并到当前托管对象上下文中的更改。我相信这就是待办事项列表示例应用程序的工作方式,因为 NSFetchedResultsController 会自动检测其托管对象上下文中的更改。

但我的问题是,是否有任何 API 用于检测可能发生的冲突?这实际上是一个两部分的问题。首先,是否存在任何 Simperium 无法处理并报告给应用程序以自定义方式处理的冲突?其次,假设我有一个约束,它实际上是作为 Core Data 验证方法实现的,例如,确保子项的数量之和等于其父项的数量(不要问我为什么,这是只是在我的应用程序中的情况),当 Simperium 同步从多个设备更改时,可能会出现两个设备都编辑子项的情况,即子项的总和不再等于父项的数量。Simperium 会将无效数据写入我的持久存储中吗?(即绕过我的核心数据验证)。或者,

如果它可以处理这些情况,我很乐意使用 Simperium。

4

1 回答 1

0

目前没有用于检测冲突的 API,因为 Simperium 旨在自动解决冲突,特别是对于 NSStrings。

我们意识到默认值并不适用于所有用例,并且系统旨在支持服务器端模式,允许您覆盖各种类型的默认冲突解决方案。例如,您可以通过始终添加值而不是替换它们来指定“合并”的数字。不过这还没有准备好。

同时,只要您只在 iOS 和 Mac 客户端之间同步,Core Data 验证应该可以工作。Simperium 最终会像其他任何东西一样调用save您,因此它应该触发验证。NSManagedObjectContext我的建议是尝试这个(Simperium 不需要太多努力来集成),如果您遇到问题,请在 GitHub 上添加问题让我们知道。

于 2013-11-05T00:33:20.777 回答