Сбой NSPersistentDocument при создании постоянного хранилища
Недавно я добавил новую сущность в свою модель Core Data, поэтому я создал новую версию для модели и модель сопоставления для нее. Однако теперь мой 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:]: попытка вставить ноль
Вот трассировка стека, если это помогает:
Удаление модели отображения не помогает, поэтому я думаю, что это потому, что документ пытается загрузить неправильную модель данных / нет, но я не нашел способа сказать, что она должна использовать данную модель данных.
Изменить: Когда я использую свой собственный класс абстракции Core Data для iOS, все в порядке. Таким образом, корень всего зла, кажется, NSPersistentDocument
, На самом деле я не хочу переключаться обратно на NSDocument, и мне придется снова самому обрабатывать Core Data, поэтому любая помощь действительно приветствуется!
2 ответа
Вы, вероятно, внесли изменения в модель, которую не может обработать автоматическая или "выведенная" миграция. Вам, вероятно, придется предоставить модель сопоставления, чтобы подробно описать, как следует выполнять миграцию.
Да, и убедитесь, что ваши старые и новые модели имеют версии, т.е. имеют номер версии. Если нет, автоматическая миграция не может определить, какая модель является старой, а какая новой.
Хорошо, я заработал, переписав - (id)managedObjectModel
и возвращаю действительную управляемую объектную модель самостоятельно. Похоже NSPersistentDocument
не может сделать это самостоятельно для моделей с несколькими версиями.