2013-10-30 37 views
0

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

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

如果可以处理这些案例,我们很乐意使用Simperium。

回答

0

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

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

与此同时,只要您仅在iOS和Mac客户端之间进行同步,核心数据验证应该可以正常工作。 Simperium最终在NSManagedObjectContext上的save就像其他任何东西一样,因此它应该触发验证。我的建议是尝试一下(Simperium不需要太多的努力来整合),并让我们知道如果您遇到问题adding an issue on GitHub