我正在使用NSFetchedResultsController来管理来自核心数据的数据,但是我总是得到这样的异常:
012-05-10 21:54:32.142 test[939:fb03] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: '+entityForName: could not locate an NSManagedObjectModel for entity name 'event''以下是我的代码
- (NSFetchedResultsController *)fetchedResultsController {
if (_fetchedResultsController != nil) {
return _fetchedResultsController;
}
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription
entityForName:@"event" inManagedObjectContext:managedObjectContext];
[fetchRequest setEntity:entity];
NSSortDescriptor *sort = [[NSSortDescriptor alloc]
initWithKey:@"date" ascending:NO];
[fetchRequest setSortDescriptors:[NSArray arrayWithObject:sort]];
[fetchRequest setFetchBatchSize:20];
NSFetchedResultsController *theFetchedResultsController =
[[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest
managedObjectContext:managedObjectContext sectionNameKeyPath:nil
cacheName:@"Root"];
self.fetchedResultsController = theFetchedResultsController;
_fetchedResultsController.delegate = self;
return _fetchedResultsController;
}有什么问题吗?thx
下面是我在数据模型和数据类中拥有的内容


可能是我的插入数据代码有问题,所以我也这样写了
- (IBAction)done:(id)sender
{
NSManagedObjectContext *context = [self.fetchedResultsController managedObjectContext];
NSEntityDescription *entity = [[self.fetchedResultsController fetchRequest] entity];
NSManagedObject *newManagedObject = [NSEntityDescription insertNewObjectForEntityForName:[entity name] inManagedObjectContext:context];
NSString *name = _nameField.text;
NSString *amount = _amountField.text;
[newManagedObject setValue:[NSDate date] forKey:@"date"];
[newManagedObject setValue:name forKey:@"name"];
[newManagedObject setValue:amount forKey:@"amount"];
[newManagedObject setValue:category forKey:@"category"];
// Save the context.
NSError *error = nil;
if (![context save:&error]) {
NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
abort();
}
[self.delegate addContentViewControllerDidSave:self];
}发布于 2012-05-10 22:07:27
您尚未在托管对象上下文模型中添加实体事件。如果你已经添加了,那么你必须第一次删除它。意思是在更改数据模型后,它们不会第一次加载到内存中。你必须删除应用程序
发布于 2012-05-10 22:34:11
这可能是因为您更改了数据模型,但没有更改NSManagedObject类。对于您所更改的实体,此处应为Event.h。
发布于 2012-05-10 22:37:40
确保将实体命名为"Event“而不是"event”。实体应该以大写字母开头,而属性名称应该以小写开头。创建的标准实体被命名为"Event",而不是"event“。
根据您的截图进行编辑,实体名为"Event",而不是"event“。此外,您的实体NSManagedObject子类应该命名为"Event“,而不是"Item”。选择实体,然后在主菜单上单击编辑器->创建NSManagedObject子类。这将正确地创建它。
修复完所有这些之后,在尝试再次运行之前,请确保重置模拟器或从模拟器中删除应用程序。
https://stackoverflow.com/questions/10535720
复制相似问题