У меня есть приложение какао, использующее данные ядра, которое сейчас находится в 4-й версии своей управляемой объектной модели.
Моя управляемая объектная модель содержит абстрактные объекты, но до сих пор мне удавалось заставить миграцию работать, создав соответствующие модели сопоставления и создав мое постоянное хранилище с помощью addPersistentStoreWithType: configuration: options: ошибка и с NSMigratePersistentStoresAutomaticallyOption, установленным в YES.
NSDictionary *optionsDictionary = [NSDictionary dictionaryWithObject:[NSNumber numberWithBool:YES] forKey:NSMigratePersistentStoresAutomaticallyOption];
NSURL *url = [NSURL fileURLWithPath: [applicationSupportFolder stringByAppendingPathComponent: @"MyApp.xml"]];
NSError *error=nil;
[theCoordinator addPersistentStoreWithType:NSXMLStoreType configuration:nil URL:url options:optionsDictionary error:&error]
Это отлично работает, когда я перехожу с версии модели 3 на 4, что представляет собой миграцию, которая включает добавление атрибутов к нескольким объектам. Теперь, когда я пытаюсь добавить новую версию модели (версия 5), вызов addPersistentStoreWithType возвращает nil, а ошибка остается пустой. Переход с 4 на 5 включает добавление одного атрибута.
Я изо всех сил пытаюсь отладить проблему и проверил все следующее:
Исходная база данных фактически имеет версию 4, а модель управляемых объектов persistentStoreCoordinator - версия 5.
Модель отображения 4-> 5 а также модели управляемых объектов для версий 4 и 5. В папке ресурсов моего созданного приложения присутствуют
Я пробовал различные пути обновления модели. Как ни странно, я обнаружил, что обновление с ранней версии 3 -> 5 работает ... но обновление с 4 -> 5 не удается.
Я попытался добавить политику переноса настраиваемых объектов для миграции объекта, атрибуты которого меняются ... в этом случае я переопределил метод beginEntityMapping: manager: error:. Интересно, что этот метод действительно вызывается, когда миграция работает (то есть когда я перехожу с 3 на 4 или с 3 на 5), но он не вызывается в случае сбоя (с 4 на 5).
Я почти не знаю, куда двигаться дальше. Мы будем очень благодарны за любые идеи, которые помогут отладить эту проблему.