Я пытаюсь обновить свое текущее приложение, чтобы использовать абстрактную родительскую сущность со специализированными подчиненными сущностями.
Я создал пользовательский NSEntityMigrationPolicy, и в модели отображения я установил в пользовательской политике имя моего класса.
Я инициализирую свой постоянный магазин следующим образом, который должен быть довольно стандартным:
NSError *error=nil;
persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel: [self managedObjectModel]];
NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys:
[NSNumber numberWithBool:YES], NSMigratePersistentStoresAutomaticallyOption,
nil];
if (![persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeUrl options:options error:&error]) {
NSLog(@"Error adding persistent store : %@",[error description]);
NSAssert(error==nil,[error localizedDescription]);
}
Когда я запускаю приложение, я получаю следующую ошибку:
Завершение приложения из-за отсутствия
исключение
'NSInternalInconsistencyException',
причина: «Операция не может быть
завершено. (Ошибка какао 134140.) '
[error userInfo] содержит " reason = Не удается найти модель сопоставления для миграции "
Я проверил, что откроется версия 1 модели данных, и если я установил NSInferMappingModelAutomaticsOption, я получу миграцию, хотя мои сущности не переносятся правильно (как и ожидалось).
Я проверил, что модель сопоставления (cdm) находится в комплекте приложений, но почему-то отказывается ее найти.
Я также установил точки останова и операторы NSLog () в настраиваемой политике миграции, и ни один из них не выполняется, с или без NSInferMappingModelAutomaticsOption
Есть какие-нибудь намеки на то, почему он не может найти модель картирования?