首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NSEntityDescription entityForName返回零

NSEntityDescription entityForName返回零
EN

Stack Overflow用户
提问于 2010-06-12 23:17:39
回答 7查看 10.3K关注 0票数 4

我对我的模型做了一些修改(但我还不想迁移,所以我只是删除应用程序,构建干净等等)。

但是,当我在iPhone或模拟器上运行它时,我会得到以下错误:

*由于非正常异常“NSInvalidArgumentException”终止应用程序,原因:“executeFetchRequest:error:获取请求必须有实体”。

我把实体设置成这样:

代码语言:javascript
复制
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Document" inManagedObjectContext:managedObjectContext];

我的managedObjectContext不是零。但是我怀疑它没有正确地加载对象模型或类似的东西,因为如果我在模型中显示实体,列表是空的:

代码语言:javascript
复制
managedObjectModel = [[NSManagedObjectModel mergedModelFromBundles:nil] retain];
NSLog(@"%d", [[managedObjectModel entities] count]);

我怎样才能确保模型已加载?

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2010-06-13 00:22:55

你在哪里“展示实体”?如果它们没有出现在数据模型编辑器中,那么它们就不存在了。

您可以使用-[NSManagedObjectModel entities]获取模型所拥有的实体的数组。

反过来,您可以使用-[NSPersistentStore managedObjectModel]查看加载了什么模型,然后查询其实体。

但是,必须告诉你,大多数情况下,这个错误是由拼写错误引起的。这就是为什么使用定义方法或类方法返回实体名称的好处所在。

票数 8
EN

Stack Overflow用户

发布于 2010-11-09 20:09:05

我也经历过同样的问题。正如TechZen的评论中所建议的那样,我的修复方法是右键单击Xcode 3.x中的文件,选择“获取信息”,然后在“目标”选项卡下勾选适当的框。

更新:在Xcode 4中,“获取信息”菜单选项已被删除。相反,您可以为右侧栏中的文件定义“目标成员资格”。

票数 6
EN

Stack Overflow用户

发布于 2012-09-26 00:11:22

另一件要注意的是,当您单击xcdatamodeld文件来查看实体以及在左侧配置(默认配置)下,您将看到实体列表。如果它们是项目中的类(我认为它们应该是类),请确保将类名放在class列下。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3030456

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档