Core Data NSInternalInconsistencyException (на этот раз по-другому)

Я знаю, что в SO есть миллион таких вопросов, но это другое, и я в тупике.

У меня есть модель данных с дюжиной сущностей. Код работал нормально. Затем я создал версию модели, добавил объект и связь, затем обновил параметр для текущей версии модели данных в файле xdatamodeld и теперь получаю NSInternalInconsistencyException при попытке доступа к новому объекту.

В своем основном VC я регистрирую контекст, координатора постоянного хранилища, управляемую объектную модель и все сущности. Все выглядит так, как я и ожидал, включая объект, к которому я пытаюсь получить доступ.

Я удалил базу данных SQLite и позволил Core Data воссоздать ее и увидеть таблицу с правильными типами столбцов.

Все выглядит правильно.

Вот код получения:

- (void)fetchMissions {
    NSFetchRequest *request = [[NSFetchRequest alloc] init];
    NSEntityDescription *entity = [NSEntityDescription entityForName:@"Mission" inManagedObjectContext:self.managedObjectContext];
    NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"title" ascending:YES];
    NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor, nil];

    [request setEntity:entity];
    [request setSortDescriptors:sortDescriptors];

    NSError *error = nil;
    missionsArray = [[self.managedObjectContext executeFetchRequest:request error:&error] mutableCopy];
}

Вот результат:

NSLog(@"Entities : %@",[[self.managedObjectContext.persistentStoreCoordinator.managedObjectModel entities] valueForKey:@"name"]);


Entities : (
    Character,
    CharacterClass,
    CharacterCondition,
    CharacterObjective,
    CharacterPerception,
    Condition,
    Mission,
    Objective,
    Perception,
    PlayerCharacter,
    Scoreboard
)

Я также вижу детали объекта Mission, когда распечатываю всю управляемую объектную модель с помощью:

NSLog(@"MOM : %@", self.managedObjectContext.persistentStoreCoordinator.managedObjectModel);

Сущность очень проста... 3 столбца, два из которых текст/строка, а один - целое число. Описание объекта в редакторе модели соответствует определению таблицы в SQLite.

Что мне не хватает??


person Raconteur    schedule 09.07.2012    source источник


Ответы (1)


Ну значит я идиот...

На мой взгляд, DidLoad не захватывал MOC, как в других VC, поэтому, когда я распечатывал правильный MOC из делегата, у меня не было дескриптора для него в Mission VC.

Фиксированный.

Спасибо за прослушивание. :)

person Raconteur    schedule 09.07.2012