通过iOS教程,似乎Simperium的工作方式与iCloud Core Data非常相似,它在后台透明地同步并将更改写入底层持久存储并合并到当前托管对象上下文中。我相信这是todo列表示例应用程序的工作方式,因为NSFetchedResultsController会自动检测其托管对象上下文中的更改。
但我的问题是,是否有任何用于检测可能发生的冲突的API?这实际上是一个两部分问题。首先,Simperium无法处理并向应用程序报告以自定义方式处理的任何冲突吗?其次,假设我有一个约束,它实际上是作为核心数据验证方法实现的,例如,确保子项的数量总和等于其父项的数量(不要问我为什么,它是它是如何在我的应用程序中),当Simperium从多个设备同步更改时,可能存在两个设备都以这样的方式编辑子项目的情况,即子项目的总和不再等于父项目的数量。 Simperium会将无效数据写入我的持久存储吗? (即绕过我的核心数据验证)。或者,它会以某种方式向我报告验证错误并让我解决应用程序中的冲突吗?
如果它可以处理这些情况,是否愿意使用Simperium。
答案 0 :(得分:0)
目前还没有用于检测冲突的API,因为Simperium旨在自动解决冲突,特别是对于NSStrings。
我们意识到默认设置不适用于所有用例,并且系统旨在支持服务器端模式,允许您覆盖各种类型的默认冲突解决方案。例如,您可以通过始终添加值而不是替换它来指定“合并”的数字。但这还没有准备好。
与此同时,只要您只在iOS和Mac客户端之间进行同步,Core Data验证就可以正常运行。 Simperium最终会在save
上调用NSManagedObjectContext
,就像其他任何内容一样,因此它应该触发验证。我的建议是尝试这个(Simperium不需要花费太多精力进行整合),如果您遇到adding an issue on GitHub的问题,请告诉我们。