0

在我的应用程序中,我有一个功能可以在按下条形按钮时显示模态视图控制器。有时我必须以编程方式调用相同的函数。但是,每当我必须以编程方式呈现视图时,它就会崩溃。我已经确定这是导致它崩溃的代码行。

[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函数,但它不会崩溃。

4

3 回答 3

0

您确定在尝试呈现控制器之前正在初始化控制器吗?

此外,如果您使用笔尖,请确保所有插座均已正确连接。

于 2011-07-23T04:09:46.683 回答
0

我使用 aNSNotificationCenter向我的 viewController 发送消息,告诉它调用从我的 appDelegatepresentController发送通知时有效的方法。

于 2011-07-24T01:32:38.140 回答
0

根据错误消息的片段,问题在于包含以下内容的行:

+[NSEntityDescription entityForName:inManagedObjectContext:]

... 方法。

最有可能的是,您让实体为获取请求提供实体。

于 2011-07-23T13:18:50.070 回答