这已经讨论了很多,但我找到的任何东西都没有帮助我...我只是想为一个单身实体添加一个属性。没有丢失我的数据的原因。
To do that, I followed these steps
但我认为它根本不起作用。只要不尝试使用新属性,就没有错误。但是在我的核心数据模型中(当我在XCode中打开.xcdatamodel时)它就在那里,甚至在我的实体的NSManagedObject子类中,新属性作为属性存在。但是当我尝试使用它时,会发生这种情况:
unrecognized selector sent to instance 0x74f8520
或
the entity Name is not key value coding-compliant for the key "isFavoriteName".'
关键字“isFavoriteName”是我刚刚添加的。就像我说的那样,我做了所有的步骤。我错过了什么吗? 我认为,新的模型版本没有被使用,因为当我删除模型中的一些属性时,我的应用程序仍然有效并且仍然显示已删除的信息...我已将当前的核心数据模型版本设置为新的(第6步)。
我希望你能帮助我!
尼克
编辑:我是否可能需要在代码中更改某些内容?除了在创建persistentStoreCoordinator时设置选项...因为我有,我想说myApp.xdatamodel,其中,我知道有myApp.xdatamodel和myApp 2,xdatamodel ......但是我的代码我会这样做:NSURL *modelURL = [[NSBundle mainBundle] URLForResource:@"myApp" withExtension:@"mom"];
_managedObjectModel = [[NSManagedObjectModel alloc] initWithContentsOfURL:modelURL];
答案 0 :(得分:3)
那是对的 - 你链接到的页面遗漏了一个适用于你案例的步骤。即使您创建了该模型的新版本,您的代码仍然按名称加载旧版本。
不要只需将其更改为加载版本2即可。这样做:
NSURL *modelURL = [[NSBundle mainBundle] URLForResource:@"myApp" withExtension:@"momd"];
这将查看momd
文件夹并获取当前版本。在这种情况下,它将获得版本2.如果您将来再次更改模型,它将获得当前的任何版本。