无法在Core Data中检索重命名的属性值

时间:2017-10-25 14:39:00

标签: ios swift core-data

在我的iOS应用核心数据模型中,我有一个名为Fish实体,其字符串属性称为mainText。我将此属性重命名为questionText。 CRUD操作适用于新数据。但是,我无法读取旧数据,即在调用属性mainText时写入的数据。这是我尝试过的:

  1. 将其重命名为mainText,它不起作用。
  2. 添加一个名为旧属性mainText的新属性,它不起作用。
  3. 如何继续检索旧数据的值(当属性仍被称为mainText时写的那个)?

1 个答案:

答案 0 :(得分:1)

如果要重命名属性并保留旧数据,则需要做两件事:

  1. 创建新版本的数据模型。您可能已经这样做了,或者您的应用根本无法加载旧数据。但如果没有,请确保将更改保留在模型文件的不同版本中。旧的模型版本需要可用或迁移不起作用。

  2. 在此属性中,设置"重命名标识符"字段包含属性的旧名称。这将告诉Core Data它应该将值迁移到新的属性名称。如果没有它,它无法判断您是否要重命名该属性,或者是否要删除旧属性并添加新的不同属性。在模型编辑器中,当您选择新属性时,您将在右侧找到此信息:

  3. Renaming ID

    您可能会发现Apple的guide to lightweight migration也很有用。