核心数据错误executeFetchRequest:错误:

时间:2012-06-01 09:18:17

标签: objective-c core-data

我一直在使用Core Data数据库,它设置为使用以下代码从数据库中加载一些数据:

NSManagedObjectContext *context = [self managedObjectContext];
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"AssignmentsInfo" inManagedObjectContext:context];
[fetchRequest setEntity:entity];
NSError *error;
NSArray *dataReturn = [context executeFetchRequest:fetchRequest error:&error];
dataSet = dataReturn;

NSFetchRequest *fetchRequestSubjects = [[NSFetchRequest alloc]init];
NSEntityDescription *entitySubjects = [NSEntityDescription entityForName:@"Subjects" inManagedObjectContext:context];
[fetchRequestSubjects setEntity:entitySubjects];
NSError *errorSubjects;
NSArray *subjectList = [context executeFetchRequest:fetchRequestSubjects error:&errorSubjects];

但运行此代码会返回错误:

 *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'executeFetchRequest:error: A fetch request must have an entity.'

* 第一次抛出调用堆栈: (0x16b1022 0x1842cd6 0xed3871 0x599a 0xe3a1e 0xe2fec 0x109f1d 0xf41cb 0x10adf1 0x10ae0d 0x10aea9 0x496f5 0x4973c 0x1a596 0x1b274 0x2a183 0x2ac38 0x1e634 0x159bef5 0x1685195 0x15e9ff2 0x15e88da 0x15e7d84 0x15e7c9b 0x1ac65 0x1c626 0x32ed 0x2385 0x1) 终止调用抛出异常(lldb)

我不太清楚为什么会发生这种错误。我有三重检查,我有的xcode模型没有错别字。 managedObjectContext也非常有效。谢谢你的帮助

5 个答案:

答案 0 :(得分:2)

尝试:
1.调试并查看entitySubjects是否不是nil
2.尝试产品 - >清洁,产品 - >构建然后尝试运行,如果它没有帮助 3.如果您添加了新的型号版本,您可能忘记将其设置为“当前版本”,如果不是这样的话 4.您的数据可能已损坏,请尝试删除它并再次运行 5.最后一次尝试是再次重新创建模型,可能出现了问题......

答案 1 :(得分:1)

确保您的managedObjectContext不是nil

答案 2 :(得分:0)

好吧,看起来[NSEntityDescription -entityForName:...]的一个或两个调用都返回nil。

可能是您的数据模型未在托管对象上下文中正确加载或设置。

答案 3 :(得分:0)

如果您更改了某个属性/实体的名称,并尝试将该应用从设备中删除,则可能会出现此错误。一个很好的解决方法是从设备中删除应用程序并在再次构建和运行应用程序之前清理项目。只需确保在应用程序上线后迁移您的数据,而不是以简单的方式更改内容。

另一种可能性是你可能试图在你的请求中使用谓词,而不是按照你的想法设置,例如我有这个:

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"id == %@", UserId];

当我的dataModel将该字段设置为“objectId”时。确保它们匹配。祝你好运

答案 4 :(得分:0)

在我的情况下,经过多次恶化,我发现已经删除了在数据模型配置中分配给实体的类。键入类的名称可以删除错误。

相关问题