重命名NSManagedObject类中的核心数据属性

时间:2014-08-05 19:24:27

标签: objective-c core-data xcode5

我想重命名一个属性sortOrder

enter image description here

sequence,在NSManagedObject类中。 (仅举例说明)

enter image description here

并遵循轻量级迁移的步骤。

enter image description here

挑战在于轻量级迁移实际上不会影响NSManagedObject类(FormItems)。

因此代码仍然使用sortOrder属性。我可以通过XCode运行重构重命名来更改代码,但是由于在类中重命名,这会破坏我的向后数据库兼容性吗?

我在这里误解了什么?

2 个答案:

答案 0 :(得分:2)

轻量级迁移应该按预期工作。这句话

  

挑战在于Lightweight Migration实际上并不影响NSManagedObject类(FormItems)。

不一定是真的。 LW迁移应该影响所有已更改的实体。

您可以重构代码以使用新名称和

  1. 创建新的模型版本。
  2. 在更改为新模型版本后,对属性进行更改。
  3. 确保持久商店有正确的选择 NSMigratePersistentStoresAutomaticallyOption
    NSInferMappingModelAutomaticallyOption

答案 1 :(得分:0)

  1. 如@Mundi所述,您需要创建一个新的模型版本。
  2. 之后,您需要在代码中将sortOrder重命名为序列。
  3. 在映射模型中,属性的值表达式" sequence"将是$ source.sortOrder。这将保留迁移后的所有先前值。