核心数据实体新属性 - 是需要的新模型版本

时间:2016-05-11 16:54:21

标签: ios objective-c swift core-data

我有一个非常简单的问题,涉及轻量级迁移和Core Data版本控制的使用。

众所周知,在修改Core Data模型时,需要确保从旧模型到新模型的转换。

对于简单的更改(例如添加新属性),只需要轻量级迁移。网上有很多信息表明要确保一切正常,需要:

  1. 创建新模型版本
  2. 进行必要的修改
  3. 将修改后的版本指定为新的当前版本
  4. 使用选项支持轻量级迁移:

    let options = [NSMigratePersistentStoresAutomaticallyOption:true,NSInferMappingModelAutomaticallyOption:true]

  5. 这种方法绝对有效。但是,我还发现,对于简单的更改,不需要新的模型版本。在我的一个应用程序中,我已经发布了一些更新,其中包括对Core Data模型的更改(所有这些都包含新属性的添加)和轻量级迁移已成功应用,无任何新模型版本。

    根据我的经验,似乎在修改Core Data版本时会为其分配一个新的标识符。然后,当这个版本在具有此型号旧版本的手机上启动时,轻量级迁移将在没有任何简单更改的情况下执行。

    然而,鉴于每个教程都建议创建一个新的模型版本,有人可以告诉我,如果我错过了一些情况,我的方法会导致崩溃吗?

1 个答案:

答案 0 :(得分:1)

Hmn ......我想你错过了一件事。如果您的“新属性”是必填字段,那么您必须为该必填字段指定默认值

注意:如果您错过设置默认值 非可选属性,则该属性将由 nil 值指定最终导致崩溃