Можно ли выполнить несколько упрощенных миграций CoreData с помощью MagicalRecord?

У меня есть четыре версии моей модели CoreData. Я только что добавил четвертый с небольшим изменением, новый необязательный атрибут в одной сущности. Между версиями 2 и 3 я допустил ошибку и внес изменения в существующую модель вместо создания новой версии. Я восстановил версию 2, добавил версию 3 и принудительно удалил магазин, поэтому пользователи, которые обновляли приложение, заново создавали магазин, а не выполняли миграцию.

Это сработало хорошо, но теперь я пытаюсь выполнить облегченную миграцию с помощью CoreData плюс MagicalRecord с версии 3 на 4 моего магазина и всегда получаю ошибку Can't find or automatically infer mapping model for migration. Я бы не хотел снова принудительно удалять, но я застрял на том, что еще я могу сделать, чтобы решить облегченную миграцию. Я начинаю подозревать, что проблема все еще лежит между версией 2 и 3, но я не могу этого подтвердить.

Код, который я использую для настройки своего магазина, довольно прост:

[MagicalRecord setupCoreDataStackWithAutoMigratingSqliteStoreNamed:@"Store.sqlite"];

person amb    schedule 08.07.2013    source источник


Ответы (1)


Это сообщение об ошибке обычно означает, что вы либо удалили, либо не включили исходную или целевую модель в свой комплект приложений, поэтому базовые данные не могут построить для вас модель сопоставления. Чтобы увидеть, какие объекты затронуты, можно распечатать хэши модели на консоли и сравнить, чтобы увидеть, какие объекты изменились. Оттуда вы можете определить, как вам нужно построить модель сопоставления. Также помните, что миграции не являются последовательными. У вас есть 4 версии вашей модели, что означает, что теперь у вас есть комбинации миграции 4 x 3 x 2. Основные данные будут делать только одно, начиная с версии вашего исходного хранилища и последней версии. Поэтому вам также необходимо протестировать миграцию с версии 1 на версию 4, версию 2 на версию 4 и т. д., чтобы охватить все ваши базы.

person casademora    schedule 09.07.2013
comment
Я ясно вижу, что хеш для сущности, для которой я добавил атрибут, отличается от версий 3 и 4 моей модели. Основываясь на вашем ответе, кажется, что я не могу полагаться только на облегченную миграцию в этом случае, я прав? - person amb; 09.07.2013