在我的iOS应用核心数据模型中,我有一个名为Fish
的实体,其字符串属性称为mainText
。我将此属性重命名为questionText
。 CRUD操作适用于新数据。但是,我无法读取旧数据,即在调用属性mainText
时写入的数据。这是我尝试过的:
mainText
,它不起作用。mainText
的新属性,它不起作用。如何继续检索旧数据的值(当属性仍被称为mainText
时写的那个)?
答案 0 :(得分:1)
如果要重命名属性并保留旧数据,则需要做两件事:
创建新版本的数据模型。您可能已经这样做了,或者您的应用根本无法加载旧数据。但如果没有,请确保将更改保留在模型文件的不同版本中。旧的模型版本需要可用或迁移不起作用。
在此属性中,设置"重命名标识符"字段包含属性的旧名称。这将告诉Core Data它应该将值迁移到新的属性名称。如果没有它,它无法判断您是否要重命名该属性,或者是否要删除旧属性并添加新的不同属性。在模型编辑器中,当您选择新属性时,您将在右侧找到此信息:
您可能会发现Apple的guide to lightweight migration也很有用。