2015-10-29 2 views
0

Хорошо, у меня есть 6 объектов: WLComment, WLItem, WLPortal, WLSponsor, WLUser, WLWishlist. Каждый из них имеет атрибут: идентификатор типа Целое число 16. Теперь мне нужно изменить тип для этого атрибута для КАЖДОЙ сущности до Целое число 32.Как перенести базовую модель данных после того, как я изменил типы для некоторых атрибутов в некоторых объектах?

  • Я знаю, что нужна миграция
  • Я знаю, что не может использовать легкие миграции, так как изменение типа не допускаются для данного типа миграции

Это, как я могу настроить базовый стек данных в AppDelegate.swift :

MagicalRecord.setupCoreDataStack()

Что я должен делать Теперь?

+0

Является ли приложение выпущено еще или оно еще находится в разработке? – Fogmeister

+0

Приложение @Fogmeister выпущено еще. –

+0

ОК, ну во-первых, вам нужно создать новую версию модели данных из старой версии. Как только приложение будет выпущено, вы не сможете просто изменить модель. Он должен оставаться прежним. Затем вы создаете новую версию, в которую вы вносите изменения. – Fogmeister

ответ

1

Скажите, какая версия модели данных у вас уже есть, Version 1. Я думаю, вы должны:

  1. создать новую версию модели данных, скажем Version 2. Установите arrtibute identifier ввести Integer 16
  2. набор Version 2 к текущей версии модели
  3. создать модель отображения для Version 1 к Version 2.
  4. не использовать MagicalRecored.setupCoreDataStack(). Вместо этого используйте вместо этого setupAutoMigratingCoreDataStack().
+0

Он работал без отображения модели. Можете ли вы объяснить мне, почему? Является ли это возможным? –

+0

Я не тестировал его, но если он мог работать без модели сопоставления, это означает, что Core Data выполняет легкую миграцию, а не стандартную. Возможно, Core Data может автоматически отображать модель сопоставления, когда вы меняете тип Interger 32 на Integer16 – Mindy