对于我正在开发的应用程序,我需要永久引用对象存储中的对象。在他们所在的上下文中调用NSManagedObjectID
后,我使用他们的[NSManagedObjectContext obtainPermanentIDsForObjects:error:]
个对象来执行此操作。
但是,当我将商店从旧版本的模型迁移到较新版本时,这些ID似乎突然引用完全不同的对象。
商店迁移后,永久身份证是否有任何理由失去“永久性”?根据我的理解from the docs,这些ID应该是永久性的,我不明白为什么非常小的模型迁移(向对象添加属性)会导致“永久”ID突然引用完全不同的对象。 / p>
答案 0 :(得分:0)
我仍然不知道为什么CoreData导致对象ID在迁移时发生变化,但我有一个简单的解决方法:
我的每个对象在MOC文件中都有一个属性“permanentId”。当我生成NSManagedObject
子类时,我让它们来自自定义子类,而不是直接NSManagedObject
。该子类自动创建NSUUID
并在首次创建对象时设置它。
它肯定不是最佳的,但它可以为对象提供唯一的ID。