核心数据:将属性从一个实体移动到另一个实体的正确方法是什么?

时间:2010-12-24 07:31:10

标签: iphone core-data

我的应用程序仍处于开发阶段,因此我并不想尝试将数据从一个版本的数据存储迁移到另一个版本。相反,我试图重构我的设计,其中一部分是将属于实体“Entity1”的属性“Foo”移动到实体“Entity2”。使用XCode数据模型编辑器,我从“Entity1”中删除了“Foo”属性。然后我选择了“Entity2”并添加了一个新属性,其名称,类型和“Foo”在“Entity1”中具有的其他设置相同。因此,我将“Foo”从“Entity1”移动到“Entity2”。然后,我为“Entity1”和“Entity2”重新创建了托管对象类,并确认它们反映了更改(“Foo”现在是“Entity2”的动态属性,而“Entity1”中缺少这些属性。)

接下来,我访问了/ Users / mike / Library / Application Support / iPhone Simulator / 4.2 / Applications目录并修改了包含我的应用程序的文件夹,以确保它不再有.sqlite文件。

接下来,我转到iOS模拟器菜单并选择重置内容和设置。

接下来,我在Xcode中做了一个Clean。

最后,我构建并运行了我的应用程序。但我得到的是一个InvalidArgumentException,声明“Entity1”id = 4中不存在“Foo”!

我以为我的数据库已经存在了?为什么我的应用程序认为存在ID为4的“Entity1”对象具有旧架构?

在Xcode中执行这样的重构的正确方法是什么?

请帮忙!

1 个答案:

答案 0 :(得分:0)

想出来。我的问题不是我如何更改数据模型,而是我有一个谓词仍然是指“Entity1”中的“Foo”属性。