2013-02-08 68 views
0

这已被讨论了很多,但没有发现我找到了帮助我...我只想添加一个单一的属性到一个单一的实体。因为没有丢失我的数据。将属性添加到核心数据实体

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”是一个我刚才added.Like我说,我做了所有的脚步。我想念什么? 我认为,新的模型版本没有被使用,因为当我删除模型中的一些属性,我的应用程序仍然工作,并且仍然显示删除的信息...我已经设置了当前的核心数据模型版本一个(步骤6)。

我希望你能帮助我!

尼克

编辑:我可能不得不改变代码中的东西吗?除了设置选项创建persistentStoreCoordinator ......当因为我有,比方说myApp.xdatamodel和那里面,我知道有myApp.xdatamodel和对myApp 2,xdatamodel ...但我我的代码门坎做:

NSURL *modelURL = [[NSBundle mainBundle] URLForResource:@"myApp" withExtension:@"mom"]; 

_managedObjectModel = [[NSManagedObjectModel alloc] initWithContentsOfURL:modelURL]; 

回答

3

这是正确的 - 您链接到的页面在您的案例中省略了一个步骤。即使您创建了新版本的模型,您的代码仍然按名称加载旧版本。

不要只是改变它加载版本2虽然。做到这一点,而不是:

NSURL *modelURL = [[NSBundle mainBundle] URLForResource:@"myApp" withExtension:@"momd"]; 

这将看在momd文件夹,并得到任何当前版本为。在这种情况下,它将获得版本2.如果将来再次更改模型,它将得到当前的任何版本。

+0

嗨,感谢你的anwnser,但我看不出你和我的代码之间的区别...? – Dafen 2013-02-09 10:25:44

+0

啊,我发现它:withExtension:@“妈妈”】应withExtension:@“momd”] ...这只是一个小的变化,我以前没注意到。现在它工作了!非常感谢=) – Dafen 2013-02-09 11:29:02