Ошибка миграции основных данных: «Не удается найти модель для исходного хранилища», но присутствует managedObjectModel для источника

У меня есть приложение какао, использующее данные ядра, которое сейчас находится в 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 включает добавление одного атрибута.

Я изо всех сил пытаюсь отладить проблему и проверил все следующее:

  1. Исходная база данных фактически имеет версию 4, а модель управляемых объектов persistentStoreCoordinator - версия 5.

  2. Модель отображения 4-> 5 а также модели управляемых объектов для версий 4 и 5. В папке ресурсов моего созданного приложения присутствуют

  3. Я пробовал различные пути обновления модели. Как ни странно, я обнаружил, что обновление с ранней версии 3 -> 5 работает ... но обновление с 4 -> 5 не удается.

  4. Я попытался добавить политику переноса настраиваемых объектов для миграции объекта, атрибуты которого меняются ... в этом случае я переопределил метод beginEntityMapping: manager: error:. Интересно, что этот метод действительно вызывается, когда миграция работает (то есть когда я перехожу с 3 на 4 или с 3 на 5), но он не вызывается в случае сбоя (с 4 на 5).

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

12
задан westsider 4 March 2011 в 19:19
поделиться