【问题标题】:How does Simperium handle custom validation logic?Simperium 如何处理自定义验证逻辑?
【发布时间】:2013-10-30 04:26:54
【问题描述】:

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

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

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

【问题讨论】:

    标签: simperium


    【解决方案1】:

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

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

    与此同时,只要您仅在 iOS 和 Mac 客户端之间进行同步,Core Data 验证就应该可以工作。 Simperium 最终会像其他任何事情一样在您的NSManagedObjectContext 上调用save,因此它应该触发验证。我的建议是试试这个(Simperium 不需要太多精力来集成),如果您遇到问题,请通过adding an issue on GitHub 告诉我们。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-27
      • 1970-01-01
      • 2020-03-10
      • 1970-01-01
      相关资源
      最近更新 更多