应用程序在运行时崩溃。它在模拟器中运行良好,但在 iPhone 上却不行。
8 月 9 日 14:20:44 未知 Mobile[1152]:*由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“executeFetchRequest:错误:获取请求必须具有实体。”
我应该寻找什么来确定为什么它在设备上中断但在模拟器上工作?
我在一个地方读到 AppDelegate 中的名称可能不正确,因为它在模拟器中不区分大小写,但对我来说看起来不错。
应用程序在运行时崩溃。它在模拟器中运行良好,但在 iPhone 上却不行。
8 月 9 日 14:20:44 未知 Mobile[1152]:*由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“executeFetchRequest:错误:获取请求必须具有实体。”
我应该寻找什么来确定为什么它在设备上中断但在模拟器上工作?
我在一个地方读到 AppDelegate 中的名称可能不正确,因为它在模拟器中不区分大小写,但对我来说看起来不错。
“获取请求必须有一个实体”
您必须使用 Core Data,当您调用时[fetchRequest setEntity:entity]
,实体可能为零?在调试器中运行以追溯原因。
您应该从 Simulator 中删除您的应用程序,以确保您重新开始并强制 Core Data 构建您的持久存储。这可以解释为什么您在设备上看到与在模拟器中不同的行为
检查 CoreData 模型文件是否存在,如果您已更改它,请从设备中删除该应用程序并再次运行它。
确保任何时候您提及您的实体时,您的名称都是正确的。例如,我的实体名称是“锻炼”,而我不小心得到了如下所示的“锻炼”。
NSEntityDescription *workouts = [NSEntityDescription entityForName:@"Workouts" inManagedObjectContext:_managedObjectContext];
一旦我用“锻炼”代替它,一切都很好。
检查您是否调用了与您在模型中定义的实体名称完全相同的名称,MyEntity
例如MyAttributes