我昨天扩展了我的"User"类,它是NSManagedObject的一个子类。我添加了一个名为"photoPath"的新属性,通常的方式是:
@property (nonatomic, retain) NSString * photopath;
@dynamic photoPath;
我添加了新版本的数据模型,并成功实施了数据迁移。一切都很完美...从现在开始。今天,当我访问我的新财产时,应用程序崩溃并说:
-[User photoPath]: unrecognized selector sent to instance xxx
从昨天开始就没有碰过任何代码,我只是关闭并重新打开了Xcode。
那么,是什么魔力使应用程序一天工作并在第二天崩溃?我知道CoreData会生成一些像.momd这样的文件。我已经清理了所有东西。有什么建议吗?
似乎 coreData 保留在旧的对象模型上,我不知道为什么.....
编辑:
当我检查Project.sqlite文件时,"photoPath"列甚至不存在。知道吗?
更改核心数据模型或子类后,我总是要做的两件事。从设备/模拟器中删除应用的实例。清理项目。
好的
当然,在我的.xdatamodeld(版本化核心数据模型)下选择了好的版本,我在发布之前进行了三重检查。
但我仍然尝试选择旧的,保存,重新选择新的,保存。
它有效...
非常感谢 Xcode,它让我放松了 2 小时
编辑:每次关闭并重新打开项目时,问题都会再次出现。在启动应用程序之前,我始终必须执行上述过程。这很烦人。如果有人知道如何更好的解决方案,我会接受他的回答。