2013-04-27 3 views
3

Я обновляю одно из своих приложений, которое использует Core Data для управления данными. В этой текущей версии я внедрил Magic Record, а также обновил модель данных. Модель данных не сможет использовать автоматическую миграцию, поэтому мне необходимо выполнить ручную миграцию. Я смущен тем, как это сделать с помощью Magic Record.Миграция с пользовательской политикой в ​​Magical Record

Я изучил исходный код для Magic Record, и из его взглядов нет реализаций поддержки диспетчера миграции при попытке создать постоянный координатор хранилища.

Если для флага DEBUG установлено значение true, приложение удаляет несовместимую версию и создает новую базу данных с текущей версией. Однако это не переносит все данные. Из документов это похоже на то, что эта функция реализована так, что нам не нужно постоянно удалять старые версии, удаляя приложение и переустанавливая, так что это имеет смысл.

Значит, поддерживает ли Magic Record миграционные менеджеры? Я думал о добавлении его в исходный код, но я не хочу изменять библиотеку.

ответ

2

Я asked авторов MagicalRecord и получил следующий ответ:

Я только что добавили это в экспериментальной ветви. Посмотрите на метод класса MagicalRecord

+setupCoreDataStackWIthManuallyMigratingStoreNamed:

Позвольте мне знать, как это работает для вас. Также в экспериментальной ветке есть некоторые другие функции , которые необходимо перенести (каламбур!) Обратно в главную ветку, поэтому дайте мне знать, если вы найдете там что-нибудь еще.

+1

Похоже, что этот метод не попал в полные версии версий за последние 3 года. Есть ли еще один официальный вариант? –

1

Вам не нужно изменять MagicalRecord. Просто настройте диспетчер миграции перед настройкой стека MagicalRecord.

  • При запуске приложения обнаружите, требуется ли вам миграция.
  • Если требуется перенастройка, запустите диспетчер миграции. Хорошим примером является SO 5995231
  • Когда закончите или когда миграция не требуется, запустите стек MagicalRecord.
+1

Будет здорово, если вы можете предоставить код для этого. – Shmidt