Это код для fetchRequest в viewDidLoad, и этот код взят из учебника, найденного здесь , только для того, чтобы программно связать контроллер навигации и табличное представление вместо использования конструктора интерфейса. Сущность ProductInfo существует. Однако, когда я запускаю программу, я получаю сообщение об ошибке:
Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: '+entityForName: could not locate an NSManagedObjectModel for entity name 'ProductInfo''
Я сбросил симулятор, если это была старая модель, но ошибка все еще возникает. Я также переключился на использование FetchedResultsController, но проблема все еще сохраняется. Это проблема, потому что эти методы fetchedResultsController не находятся внутри appdelegate? В настоящее время они находятся в TableViewController. Как я могу решить эту проблему?
Метод viewDidLoad:
- (void)viewDidLoad{
NSFetchRequest * fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription * entity = [NSEntityDescription entityForName:@"ProductInfo" inManagedObjectContext:context];
[fetchRequest setEntity:entity];
NSError * error;
self.productInfos = [_context executeFetchRequest:fetchRequest error:&error];
[fetchRequest release];
[super viewDidLoad];}
ProductInfo.h:
@class ProductDetails;
@interface ProductInfo : NSManagedObject {
@private
}
@property (nonatomic, retain) NSString * productName;
@property (nonatomic, retain) NSString * productPrice;
@property (nonatomic, retain) ProductDetails * details;
@end
FetchedResultsController
-(NSFetchedResultsController *)fetchedResultsController {
if (_fetchedResultsController != nil) {
return _fetchedResultsController;
}
NSFetchRequest * fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription * entity = [NSEntityDescription entityForName:@"ProductInfo" inManagedObjectContext:_context]; //line that is causing the problem
[fetchRequest setEntity:entity];
NSSortDescriptor * sort = [[NSSortDescriptor alloc] initWithKey:@"productInfos.productName" ascending:YES];
[fetchRequest setSortDescriptors:[NSArray arrayWithObject:sort]];
[fetchRequest setFetchBatchSize:20];
NSFetchedResultsController * theFetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext: _context sectionNameKeyPath:nil cacheName:@"Root"];
self.fetchedResultsController = theFetchedResultsController;
_fetchedResultsController.delegate = nil;
[sort release];
[fetchRequest release];
[theFetchedResultsController release];
return _fetchedResultsController;
}
Любая помощь высоко ценится. Спасибо заранее.
В случае, если вышеупомянутые фрагменты, которые я вставил, не помогли, я также прикрепил весь проект с моделью данных внутри.
http://www.mediafire.com/?5cns4q0sv9hqn6s