NSEntityDescription entityForName返回nil

Kam*_*tka 3 core-data nsmanagedobject ios

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

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

***由于未捕获的异常'NSInvalidArgumentException'而终止应用程序,原因:'executeFetchRequest:error:获取请求必须有一个实体.

我像这样设置实体:

NSEntityDescription *entity = [NSEntityDescription entityForName:@"Document" inManagedObjectContext:managedObjectContext];
Run Code Online (Sandbox Code Playgroud)

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

managedObjectModel = [[NSManagedObjectModel mergedModelFromBundles:nil] retain];
NSLog(@"%d", [[managedObjectModel entities] count]);
Run Code Online (Sandbox Code Playgroud)

如何确保加载模型?

Tec*_*Zen 6

你在哪里"展示实体"?如果它们没有出现在数据模型编辑器中,则它们不存在.

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

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

但是要告诉你,大多数时候这个错误是由拼写错误造成的.这就是为什么使用定义或类方法返回实体名称的好处.


Web*_*eed 6

我遇到了同样的问题.正如TechZen评论中所建议的那样,我的修复是右键单击Xco​​de 3.x中的文件,选择"获取信息",然后勾选"目标"选项卡下的相应框.

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