Каждое изменение, которое вы вносите в модель Core Data, приводит к новой версии.КАЖДОЕ изменение.
Базовые данные не имеют понятия, что одна модель новее другой, хотя они просто знают, что они разные.Core Data не будет использовать хранилище (базу данных на диске), созданное версией модели, отличной от той, что у вас есть.
Вот тут и начинается миграция, которая представляет собой простой процесс, чтобы сообщить Core Data, как получить из одной моделидругому с данными, сохраненными в базе данных, сделанной определенной моделью.Базовые данные могут попытаться угадать (автоматическая миграция), что для простых изменений может работать нормально, но вы можете вручную создавать более сложные миграции, которые аккуратно извлекают данные из одной версии модели и помещают их в базу данных более новой версии модели.
Когда вы создаете новую версию модели?После того, как вы отправите приложение с моделью базовых данных в App Store, вы должны немедленно создать новую версию модели для изменений, чтобы исходная версия модели могла создать путь миграции для людей, которые имеют версию App Store на более позднюю версию.
Когда следует создавать миграцию?По сути, каждый раз, когда вы отправляете новую версию в магазин, вам нужно найти путь от любой предыдущей модели, которая была в магазине (и, следовательно, может быть на чьем-то телефоне), до последней версии модели данных.Как уже отмечалось, если изменения просты, вы можете использовать автоматическую версию, но всегда тестируйте (держите каждый выпуск магазина приложений доступным для сборки, чтобы вы могли протестировать загрузку более старой версии и переход на новую).
Между прочим, приемлемый план состоит в том, чтобы просто удалить существующую базу данных, если модель вообще изменилась, при условии, что вы можете поместить что-либо, что пользователь сделал назад, в базу данных каким-либо образом (или если пользователь никогда ничего не помещал ввсе, как в кеширующей базе).