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

时间:2012-08-09 18:22:10

标签: iphone core-data ios-simulator ios

应用程序在运行时崩溃。它在模拟器中工作正常但在iPhone上却不行。

8月9日14:20:44未知移动[1152]: * 由于未捕获的异常'NSInvalidArgumentException'而终止应用程序,原因:'executeFetchRequest:错误:获取请求必须有实体。'

我应该寻找什么来确定它在设备上出现故障但在模拟器上工作的原因?

我读到的一个地方,AppDelegate中的名称可能不正确,因为它在模拟器中不区分大小写,但对我来说看起来还不错。

4 个答案:

答案 0 :(得分:2)

“获取请求必须具有实体”

你必须使用核心数据,当你打电话给[fetchRequest setEntity:entity]时,实体可能是零吗?在调试器中运行以追溯原因。

您应该从Simulator中删除您的应用,以确保您重新开始并强制Core Data构建您的持久存储。这可能解释了为什么您在设备上看到的不同行为与模拟器中的行为

答案 1 :(得分:1)

检查Core Data模型文件是否存在,如果您已更改,请从设备中删除该应用程序并再次运行。

答案 2 :(得分:0)

确保无论何时引用您的实体,您都拥有正确的名称。例如,我的实体名称是“锻炼”,我不小心有“锻炼”,如下所示。

 NSEntityDescription *workouts = [NSEntityDescription entityForName:@"Workouts" inManagedObjectContext:_managedObjectContext];

一旦我用“锻炼”替换它,一切都运转良好。

答案 3 :(得分:0)

检查您是否正在调用与模型中定义的实体名称完全相同的名称,例如MyEntityMyAttributes