Simperium复制现有记录

时间:2016-11-15 20:27:35

标签: ios swift core-data simperium

首次启动iOS应用时,它会使用默认数据初始化一些实体。当应用程序首次安装在设备上时,同一用户的每个设备都完成相同的过程。这导致了Simperium的问题,因为即使我对其中一个实体的属性有约束,它也会产生重复。怎么能避免这种情况发生?有没有办法让Simperium跳过对象在本地初始化?或者为了防止它插入重复项?

将实体的 simperiumKey 设置为自定义常量值,该值对于用户的所有设备都是相同的修复问题?我的意思是,是否会阻止Simperium从可能产生重复和同步冲突的不同设备导入同一个实体?

因为我尝试了这个选项,看起来Simperium Server上的存储桶是可以的,但当我处理视图并再次打开它时,实体就不再存在了。当我重新启动应用程序时,他们又回来了...看起来他们在重置应用程序后再次出现了......非常奇怪。

更新 问题是如果我尝试从不同的设备插入相同的实体,我会得到重复的实体。例如。当我第一次设置我的应用程序时,我有一个函数,用代码和其他东西初始化CURRENCY实体。如果用户决定在新设备上安装应用程序,则可以从其他设备执行相同的操作。在这种情况下,因为新设备将再次初始化CURRENCY实体,这些信息将生成重复和冲突错误。我需要一种方法让Simperium理解在设备中本地初始化的实体不得重复。我会从SPManagedObject中删除继承以阻止Simperium同步实体,但是反过来它们与其他实体有关系并且最终会产生Simperium的问题,因为它会尝试同步与不继承的对象有关系的实体来自SPManagedObject。希望你现在有一个更明确的想法。

1 个答案:

答案 0 :(得分:0)

在阅读了有关此主题的各种帖子后,我了解到没有注销(这意味着:不调用signOutAndRemoveLocalData)并设置自定义simperiumKey-s会阻止数据重复。我测试了这个解决方案,看起来很好看。我的应用程序需要Simperium与同一用户的其他设备同步数据,但它主要与本地CoreData数据库一起使用。我希望这个解决方案适用于这种情况。