Сбой NSPersistentDocument при создании постоянного хранилища - PullRequest
0 голосов
/ 09 марта 2011

Недавно я добавил новую сущность в свою модель базовых данных, поэтому создал новую версию для модели и модель сопоставления для нее.Однако теперь мой NSPersistentDocument падает без видимой причины:

NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithBool:YES], NSMigratePersistentStoresAutomaticallyOption, 
                                                                        [NSNumber numberWithBool:YES], NSInferMappingModelAutomaticallyOption, nil];

BOOL success = [self configurePersistentStoreCoordinatorForURL:storeURL ofType:typeName modelConfiguration:nil storeOptions:options error:error]; // Line that crashes

Журналы консоли:

*** - [NSCFArray insertObject: atIndex:]: попытка вставить nil

Вот трассировка стека, если она помогает: Stacktrace

Удаление модели отображения не помогает, поэтому я полагаю, что это потому, что документ пытается загрузить неправильные данные / данные отсутствуютмодель, но я не нашел способа сказать, что она должна использовать данную модель данных.

Редактировать: Когда я использую свой собственный класс абстракции Core Data для iOS, все в порядке.Таким образом, корень всего зла, кажется, NSPersistentDocument.На самом деле я не хочу переключаться обратно на NSDocument, и мне придется снова самому обрабатывать Core Data, поэтому любая помощь действительно приветствуется!

Ответы [ 2 ]

0 голосов
/ 09 марта 2011

Хорошо, я заработал, переписав - (id)managedObjectModel и вернув верную модель управляемого объекта самостоятельно. Похоже, NSPersistentDocument не может сделать это самостоятельно для моделей с несколькими версиями.

0 голосов
/ 09 марта 2011

Вы, вероятно, внесли изменение в модель, которую не может обработать автоматическая или "выведенная" миграция.Вам, вероятно, придется предоставить модель сопоставления, чтобы подробно описать, как следует выполнять миграцию.

О, и убедитесь, что ваши старые и новые модели имеют версии, т.е. имеют номер версии.Если нет, автоматическая миграция не может определить, какая модель является старой, а какая новой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...