当向现有实体添加新属性时是否需要核心数据迁移?

he1*_*end 5 core-data objective-c core-data-migration ios swift

我读过一些文章,指出只要实体、属性或关系发生变化,就应该进行轻量级迁移。但前几天和学长聊天的时候,学长问我,​​新增属性时是否真的需要轻量级迁移。这让我很困惑。我知道在对核心数据模型进行任何更改之前我们应该始终创建一个新版本。那么这是否意味着版本控制与迁移相同。如果我们重命名现有属性,是否需要迁移?如果有人能帮助我,我将非常感激。

mbi*_*mbi 8

当我们向现有实体添加新属性时,是否需要迁移?

需要进行迁移,但您不是自己创建的。自动轻量级迁移完美地涵盖了添加属性。当您将属性添加到核心数据架构并打开启用了轻量级迁移的现有存储时,现有存储将无缝迁移。

根据经验,当向现有实体添加新实体或属性时,您可以使用自动轻量级迁移。对于类型更改和现有属性的重命名,您很可能需要创建重量级迁移,否则在使用新架构打开现有存储时数据将会丢失。

迁移和版本控制是一回事吗

不会。版本控制是指迁移应用于现有存储时的核心数据架构。当您要更改现有实体或关系时,您应该添加新的架构版本。此外,当您使用此架构作为目标创建重量级迁移时,在更改架构中的任何内容之前添加新架构非常重要。否则迁移将会中断,因为它不再有匹配的目标。