0

UPDATE 这是一个简单的方法来复制问题,打开任何应用程序与从核心数据加载的tableview。然后在标签栏中,设置不同的选项卡以打开相同的tableview。你得到*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: '+entityForName: could not locate an NSManagedObjectModel for entity name 'FooSpelledCorrectly''TabController中的第二个表视图 - 崩溃

我有一个tabcontroller应用程序中的第二个表视图,并且该应用程序在选择该选项卡时崩溃。我得到SIGABRT i like frogs

我已经复制了tableview的(h | m)文件并将它们添加到项目中。在应用程序代理中,我添加了SearchGroupViewController *searchListController2;,原始tableview使用SearchDestinationsViewController *searchListController;

我觉得我必须缺少一些简单的东西。任何想法在哪里看?我是否需要创建第二个控制器? 两个.m文件执行fetchedResultsController

- (NSFetchedResultsController *)fetchedResultsController { 

    // Set up the fetched results controller if needed. 
    if (fetchedResultsController == nil) { 
     // Create the fetch request for the entity. 
     NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init]; 
     // Edit the entity name as appropriate. 
     NSEntityDescription *entity = [NSEntityDescription entityForName:@"FooSpelledCorrectly" inManagedObjectContext:managedObjectContext]; 
     [fetchRequest setEntity:entity]; 

     NSSortDescriptor *sortDescriptor1 = [[NSSortDescriptor alloc] initWithKey:@"state" ascending:YES];// was name 

     NSSortDescriptor *sortDescriptor2 = [[NSSortDescriptor alloc] initWithKey:@"name" ascending:YES]; 

     NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor1,sortDescriptor2, nil];// was 2// sortDescriptor, 

     [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:managedObjectContext sectionNameKeyPath:@"state" cacheName:nil];//@"state" 
     aFetchedResultsController.delegate = self; 
     self.fetchedResultsController = aFetchedResultsController; 

     //letters = [aFetchedResultsController valueForKey:@"alphabetIndex"]; 

     [aFetchedResultsController release]; 
     [fetchRequest release]; 
     //[sortDescriptor release]; 
     [sortDescriptor1 release]; 
     [sortDescriptor2 release]; 
     [sortDescriptors release]; 
    } 

崩溃日志:

2011-12-07 13:11:46.367 CoveredBridges[5762:207] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: '+entityForName: could not locate an NSManagedObjectModel for entity name 'Recipe'' 
*** Call stack at first throw: 

感谢任何帮助或指针! Robert

+0

每个人在一个有“崩溃”一词的问题中寻找的第一件事就是崩溃日志。你的崩溃日志在哪里?没有崩溃记录它浪费我们的时间阅读你的整个问题,并找出出了什么问题。 – 0x8badf00d

+1

也许是一个愚蠢的问题......但是你的核心数据模式中是否有一个名为'Recipe'的实体定义?如果是这样,你可能拼错了吗? –

+0

是的,它都可以在第一个(初始)tableview上运行。它在第二个选项卡(tableview)上死了。 – roberthuttinger

回答

0

总之,答案是在每个视图中实例化数据并在viewDidLoad中完成时释放它。它之前被加载并与代表共享应用程序。也许我可以检查存在?它现在有效,我想分享。

managedObjectContext = nil; 
managedObjectContext = [(RecipesAppDelegate *)[[UIApplication sharedApplication] delegate] managedObjectContext]; 
    NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init]; 
    NSEntityDescription *entity = [NSEntityDescription entityForName:@"MyAwesomeData" inManagedObjectContext:managedObjectContext]; 
    [fetchRequest setEntity:entity]; 

    NSSortDescriptor *sortDescriptor1 = [[NSSortDescriptor alloc] initWithKey:@"state" ascending:YES]; 

     NSSortDescriptor *sortDescriptor2 = [[NSSortDescriptor alloc] initWithKey:@"name" ascending:YES]; 

    NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor1,sortDescriptor2, nil]; 

    [fetchRequest setSortDescriptors:sortDescriptors]; 

     NSFetchedResultsController *aFetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:managedObjectContext sectionNameKeyPath:@"state" cacheName:nil]; 
     aFetchedResultsController.delegate = self; 
     self.fetchedResultsController = aFetchedResultsController; 

    [aFetchedResultsController release]; 
    [fetchRequest release]; 
    [sortDescriptor1 release]; 
    [sortDescriptor2 release]; 
    [sortDescriptors release];