首次启动我的iOS应用程序时,它将使用默认数据初始化一些实体。首次在设备上安装该应用程序时,会对同一用户的每个设备完成相同的过程。这会导致Simperium出现问题,因为即使我对实体的一个属性有约束,它也会创建重复项。如何避免这种情况发生?有没有一种方法可以使Simperium跳过本地初始化的对象?还是防止它插入重复项?

将实体的simperiumKey设置为与用户的所有设备相同的自定义常量值可以解决该问题吗?我的意思是,这会阻止Simperium从不同的设备中导入完全相同的实体,从而产生重复和同步冲突吗?

因为我尝试了该选项,因此Simperium Server上的存储桶看起来还可以,但是当我放置视图并再次打开它时,实体不再存在。当我重新启动应用程序时,它们又恢复了...似乎在重置应用程序后它们消失了,重新出现了。

更新
问题是,如果我尝试从其他设备插入相同的实体,则会得到重复的实体。例如。第一次设置我的应用程序时,我具有一个使用代码和其他东西初始化CURRENCY实体的函数。如果用户决定在新设备上安装该应用程序,则将从另一台设备执行相同的操作。在这种情况下,由于新设备将再次初始化CURRENCY实体,因此这些信息将生成重复项和冲突错误。我需要一种使Simperium了解设备中本地化的实体的方式不能重复。我将删除SPManagedObject的继承关系,以阻止Simperium同步实体,但是反过来,它们与其他实体有关系,这肯定会给Simperium带来问题,因为它将尝试同步与非继承对象有关系的实体从SPManagedObject。希望您现在有了一个更清晰的想法。

最佳答案

阅读有关该主题的各种文章后,我了解到不注销(即:不调用signOutAndRemoveLocalData)和设置自定义simperiumKey-s可以防止数据重复。我测试了此解决方案,它看起来似乎不错。我的应用程序需要Simperium与同一用户的其他设备同步数据,但是它主要与本地CoreData数据库一起使用。我希望这种解决方案对这种情况是好的。

09-25 20:52