是否可以更改核心数据关系的删除规则,仍然进行轻量级迁移?
Can I change the deletion rule of a core data relationship and still perform a lightweight migration?
我有两个应用程序与同一个 API 通信。随着他们的成长,他们每个人都拥有更多 API 的功能,我现在处于除了启动控制器的排列之外他们完全相同的阶段。
到目前为止,他们的核心数据模型是单独维护的,只包含他们需要的那些实体;但我现在想为每个版本使用相同的数据模型版本。但是,他们的最新版本确实在一些小方面有所不同,特别是在某些关系的删除规则方面。
如果我在版本之间将删除规则从 Nullify
更改为 Cascade
,反之亦然,我是否仍然能够执行轻量级迁移? Apple's web page 中未提及,但它确实列出了兼容的类似步骤(例如一对一 <-> 对多)
是的。事实上,如果更改删除规则只是更改,您甚至不需要进行迁移。
对此的一些解释:仅当版本哈希发生变化时才需要迁移。版本散列仅考虑影响数据如何保存在持久存储中的细节。如果您在 NSRelationshipDescription
上查找 versionHash
,它添加的唯一内容是 “...目标实体的名称和反向关系,以及最小和最大计数。” 删除规则与版本哈希无关,因此与迁移无关。
我有两个应用程序与同一个 API 通信。随着他们的成长,他们每个人都拥有更多 API 的功能,我现在处于除了启动控制器的排列之外他们完全相同的阶段。
到目前为止,他们的核心数据模型是单独维护的,只包含他们需要的那些实体;但我现在想为每个版本使用相同的数据模型版本。但是,他们的最新版本确实在一些小方面有所不同,特别是在某些关系的删除规则方面。
如果我在版本之间将删除规则从 Nullify
更改为 Cascade
,反之亦然,我是否仍然能够执行轻量级迁移? Apple's web page 中未提及,但它确实列出了兼容的类似步骤(例如一对一 <-> 对多)
是的。事实上,如果更改删除规则只是更改,您甚至不需要进行迁移。
对此的一些解释:仅当版本哈希发生变化时才需要迁移。版本散列仅考虑影响数据如何保存在持久存储中的细节。如果您在 NSRelationshipDescription
上查找 versionHash
,它添加的唯一内容是 “...目标实体的名称和反向关系,以及最小和最大计数。” 删除规则与版本哈希无关,因此与迁移无关。