迁移存储时CoreData永久ID会更改

时间:2016-01-11 20:59:45

标签: macos cocoa core-data

对于我正在开发的应用程序,我需要永久引用对象存储中的对象。在他们所在的上下文中调用NSManagedObjectID后,我使用他们的[NSManagedObjectContext obtainPermanentIDsForObjects:error:]个对象来执行此操作。

但是,当我将商店从旧版本的模型迁移到较新版本时,这些ID似乎突然引用完全不同的对象。

商店迁移后,永久身份证是否有任何理由失去“永久性”?根据我的理解from the docs,这些ID应该是永久性的,我不明白为什么非常小的模型迁移(向对象添加属性)会导致“永久”ID突然引用完全不同的对象。 / p>

1 个答案:

答案 0 :(得分:0)

我仍然不知道为什么CoreData导致对象ID在迁移时发生变化,但我有一个简单的解决方法:

我的每个对象在MOC文件中都有一个属性“permanentId”。当我生成NSManagedObject子类时,我让它们来自自定义子类,而不是直接NSManagedObject。该子类自动创建NSUUID并在首次创建对象时设置它。

它肯定不是最佳的,但它可以为对象提供唯一的ID。