当我的iOS应用程序第一次启动时,它会用默认数据初始化一些实体。当应用程序首次安装在设备上时,相同用户的每个设备都会完成相同的过程。这会导致Simperium的问题,因为即使我对实体的一个属性有一个约束,它也会创建重复的属性。怎样才能避免这种情况的发生?有没有办法使Simperium跳过本地初始化的对象?还是为了防止它插入副本?
将实体的simperiumKey设置为自定义常量值(对于用户的所有设备都是相同的)会修复这个问题吗?我的意思是,这会阻止Simperium从不同的设备中导入相同的实体,从而产生重复和同步冲突吗?
因为我尝试了这个选项,看起来Simperium Server上的存储桶是可以的,但是当我释放视图并再次打开它时,实体就不再存在了。当我重新启动应用程序时他们又回来了..。看起来,在重置应用程序之后,它们似乎会重新出现。很奇怪。
更新问题是,如果我尝试从不同的设备插入相同的实体,就会得到重复的实体。例如。当我第一次安装我的应用程序时,我有一个用代码和其他东西初始化货币实体的函数。如果用户决定在新的设备上安装应用程序,同样的操作将在不同的设备上完成。在这种情况下,由于新设备将再次初始化货币实体,这些信息将生成重复和冲突错误。我需要一种方法来让Simperium理解在设备中本地非化的实体不能被复制。我将从SPManagedObject中删除继承,以阻止Simperium同步这些实体,但它们又与其他实体有关系,这肯定会给Simperium带来问题,因为它将尝试同步与未从SPManagedObject继承的对象有关联的实体。希望你现在有一个更清楚的想法。
发布于 2016-11-18 08:14:40
在阅读了有关这个主题的各种帖子之后,我已经理解不签出(这意味着:不调用signOutAndRemoveLocalData)和设置自定义simperiumKey-s将防止数据复制。我测试了这个解决方案,看起来很不错。我的应用程序需要Simperium与同一用户的其他设备同步数据,但它主要用于本地CoreData数据库。我希望这个解决方案对这种情况是有益的。
https://stackoverflow.com/questions/40619085
复制相似问题