我对我的模型做了一些修改(但我还不想迁移,所以我只是删除应用程序,构建干净等等)。
但是,当我在iPhone或模拟器上运行它时,我会得到以下错误:
*由于非正常异常“NSInvalidArgumentException”终止应用程序,原因:“executeFetchRequest:error:获取请求必须有实体”。
我把实体设置成这样:
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Document" inManagedObjectContext:managedObjectContext];我的managedObjectContext不是零。但是我怀疑它没有正确地加载对象模型或类似的东西,因为如果我在模型中显示实体,列表是空的:
managedObjectModel = [[NSManagedObjectModel mergedModelFromBundles:nil] retain];
NSLog(@"%d", [[managedObjectModel entities] count]);我怎样才能确保模型已加载?
发布于 2010-06-13 00:22:55
你在哪里“展示实体”?如果它们没有出现在数据模型编辑器中,那么它们就不存在了。
您可以使用-[NSManagedObjectModel entities]获取模型所拥有的实体的数组。
反过来,您可以使用-[NSPersistentStore managedObjectModel]查看加载了什么模型,然后查询其实体。
但是,必须告诉你,大多数情况下,这个错误是由拼写错误引起的。这就是为什么使用定义方法或类方法返回实体名称的好处所在。
发布于 2010-11-09 20:09:05
我也经历过同样的问题。正如TechZen的评论中所建议的那样,我的修复方法是右键单击Xcode 3.x中的文件,选择“获取信息”,然后在“目标”选项卡下勾选适当的框。
更新:在Xcode 4中,“获取信息”菜单选项已被删除。相反,您可以为右侧栏中的文件定义“目标成员资格”。
发布于 2012-09-26 00:11:22
另一件要注意的是,当您单击xcdatamodeld文件来查看实体以及在左侧配置(默认配置)下,您将看到实体列表。如果它们是项目中的类(我认为它们应该是类),请确保将类名放在class列下。
https://stackoverflow.com/questions/3030456
复制相似问题