核心数据迁移 - 删除关系规则

时间:2013-01-08 17:28:13

标签: iphone ios ipad core-data migration

如果更改migration rules的{​​{1}}

,我发现deletion rule没有任何内容

我的初始coredata模型包含一个有关系的实体。此关系的删除规则为managedObjects relationship。我不得不将此行为更改为cascade

因此,我创建了一个Nullify,但没有任何轻量级迁移,它仍然有效。所以如果我应该添加我的模型的新版本,或者如果更改删除规则(例如从new version of my coredata modelcascade)不会影响/需要任何迁移,那么我会更加干净。

有什么建议吗?

1 个答案:

答案 0 :(得分:19)

删除规则指定Core Data 在运行时的行为:如果删除了一个对象,则其他关系可能设置为NULL,或者也可能删除相关对象。

因此,我假设删除规则仅存储在Core Data模型中,但不存储在持久存储文件中。

为了验证这一点,我从2个核心数据模型创建了2个存储文件,这些模型具有相同的实体,但具有不同的删除规则。持久性存储NSStoreModelVersionHashes字典中的metadata是相同的。

实际上,两个SQLite文件都与“Z_METADATA”表中“Z_UUID”的唯一例外相同,后者是持久性存储文件的NSStoreUUID

此外,如果加载的商店的版本哈希值与模型中的哈希值不同,addPersistentStoreWithType:...将失败。

因此,更改删除规则不应成为问题。