在我的应用程序中,我有一个功能可以在按下条形按钮时显示模态视图控制器。有时我必须以编程方式调用相同的函数。但是,每当我必须以编程方式呈现视图时,它就会崩溃。我已经确定这是导致它崩溃的代码行。
[self presentModalViewController:controller animated:YES];
我得到了错误
*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: '+entityForName: could not locate an NSManagedObjectModel for entity name 'Website''
即使我没有将新对象插入到我的实体中。
编辑:这是以编程方式调用的函数,当按下条形按钮时。
- (void) presentController {
WebController *webController = [[WebController alloc] initWithNibName:@"WebController" bundle:nil];
webController.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
webController.delegate = self;
[self presentModalViewController:webController animated:YES];
[webController release];
}
这是发生错误的代码。
- (NSFetchedResultsController *)fetchedResultsController {
if (fetchedResultsController_ != nil) {
return fetchedResultsController_;
}
/*
Set up the fetched results controller.
*/
// Create the fetch request for the entity.
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
// Edit the entity name as appropriate.
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Website" inManagedObjectContext:self.managedObjectContext];
[fetchRequest setEntity:entity];
// Set the batch size to a suitable number.
[fetchRequest setFetchBatchSize:20];
// Edit the sort key as appropriate.
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"name" ascending:YES];
NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor, nil];
[fetchRequest setSortDescriptors:sortDescriptors];
// Edit the section name key path and cache name if appropriate.
// nil for section name key path means "no sections".
NSFetchedResultsController *aFetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:self.managedObjectContext sectionNameKeyPath:nil cacheName:@"Root"];
aFetchedResultsController.delegate = self;
self.fetchedResultsController = aFetchedResultsController;
[aFetchedResultsController release];
[fetchRequest release];
[sortDescriptor release];
[sortDescriptors release];
NSError *error = nil;
if (![fetchedResultsController_ performFetch:&error]) {
/*
Replace this implementation with code to handle the error appropriately.
abort() causes the application to generate a crash log and terminate. You should not use this function in a shipping application, although it may be useful during development. If it is not possible to recover from the error, display an alert panel that instructs the user to quit the application by pressing the Home button.
*/
NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
abort();
}
return fetchedResultsController_;
}
编辑:presentController
当我的应用程序从后台状态恢复时,我从 appDelegate 调用该函数,因此我尝试在 viewController 的函数中调用相同的viewDidLoad
函数,但它不会崩溃。