Второе табличное представление в TabController - сбой - PullRequest
0 голосов
/ 07 декабря 2011

ОБНОВЛЕНИЕ Вот простой способ воспроизвести проблему, откройте любое приложение с табличным представлением, загруженным из основных данных.затем на панели вкладок установите другую вкладку, чтобы открыть то же самое представление таблицы.и вы получаете *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: '+entityForName: could not locate an NSManagedObjectModel for entity name 'FooSpelledCorrectly''

У меня есть второе представление таблицы в приложении tabcontroller, и приложение вылетает при выборе вкладки.Я получаю SIGABRT i like frogs

Я скопировал (h | m) файлы таблицы и добавил их в проект.В делегате приложения я добавил SearchGroupViewController *searchListController2;, в исходном табличном представлении используется 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:

Спасибо за любую помощь или указатели!Роберт

1 Ответ

0 голосов
/ 08 декабря 2011

Короче говоря, ответ состоял в том, чтобы создать экземпляр данных в каждом представлении и выпустить их, когда все будет сделано в 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];
...