核心数据:移动到详细视图时获取崩溃

Posted

技术标签:

【中文标题】核心数据:移动到详细视图时获取崩溃【英文标题】:Core Data: Fetch Crashes When Moving to Detail View 【发布时间】:2010-11-20 19:26:24 【问题描述】:

我的应用是多视图。主视图通向包含核心数据事物的详细视图。当我尝试在主视图中按下按钮以转到详细视图时,出现以下崩溃:

2010-11-21 01:41:01.487 CustomTableView[2253:207] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'executeFetchRequest:error: A fetch request must have an entity.'

Core Data 代码过去在另一个项目中运行良好,但在这个项目中崩溃了。 没有Core Data的视图没有问题

我该如何解决这个问题? 任何帮助表示赞赏


更新

这是获取代码:

NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];


CustomTableViewAppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];
NSManagedObjectContext *managedObjectContext = appDelegate.managedObjectContext;

NSEntityDescription *entity = [NSEntityDescription entityForName:@"Hero" inManagedObjectContext:managedObjectContext];
[fetchRequest setEntity:entity];

【问题讨论】:

【参考方案1】:

获取请求未指定其实体。缺少这样的代码:

NSEntityDescription *entity = [NSEntityDescription entityForName:@"EntityName" inManagedObjectContext:moc];
[fetchRequest setEntity:entity];

或者,如果您使用的是获取请求模板,则该模板缺少其实体说明符。

【讨论】:

是的,我的 fetchresultcontroller 方法中有这样的代码,这个方法在具有核心数据的视图中,我需要将它重新定位到其他地方吗? 你能验证用于获取请求的实体是非零吗?可能实体名称拼写错误或托管对象上下文为 nil。 实体名是一样的,但是我不确定管理对象上下文,我先复习一下 对了,有没有其他因素会导致这种情况发生? 我不知道。错误消息指出“获取请求必须具有实体”。这清楚地表明您的CustomTableView 中使用的获取请求缺少实体。记录实体——NSLog(@"%@", entity);——应该能够确认或打折这一点。

以上是关于核心数据:移动到详细视图时获取崩溃的主要内容,如果未能解决你的问题,请参考以下文章

从集合视图移动到详细视图时如何利用 CoreData

核心数据表视图删除崩溃

应用程序在第二次选择同一行时崩溃

将输出映射到 Restkit 中的核心数据时崩溃

如何在“详细”实体视图中为“主/父”实体“保存”(核心数据)?

如何使用更新的数据刷新 NSManagedObject - Core Data