Не приведет ли использование облегченной миграции с десятками обновлений к снижению производительности?

#iphone #core-data #mapping-model

#iPhone #core-data #отображение-модель

Вопрос:

Я думаю, что я замечаю, что я, вероятно, должен сохранять весь стек версий моделей нетронутым при отправке обновлений. Я не уверен, что произойдет, если у кого-то есть версия 1.0 с заполненными данными, а затем мгновенно обновляется до версии 5.0 без какой-либо промежуточной версии. Таким образом, при миграции также необходимо знать, какой была эта самая первая модель данных. Или, может быть, это вообще не работает. не знаю.

Однако после некоторых изменений у меня было около 25 моделей данных, где последней была текущая версия. Итак, я предполагаю, что координатору постоянного хранилища придется много работать, перебирая эти версии и выясняя различия, шаг за шагом. Разве это не отстой? Есть ли обходной путь?

Ответ №1:

Если пользователь переходит с версии 1 на версию 5, Core Data попытается выполнить это за один проход.

Core Data не имеет понятия «версия 1» и «версия 5», она понимает только исходные и целевые модели. Когда пользователь загружает вашу «версию 1», Core Data находит исходную модель в вашем пакете. Core Data также определит пункт назначения на основе «текущей» модели. Оттуда он пытается выполнить миграцию.

Поэтому при создании новой версии вы ДОЛЖНЫ протестировать каждую возможную миграцию, чтобы убедиться, что они работают. Если они не работают с automatic, то добавьте модель сопоставления для этой миграции.

Таким образом, проблем с производительностью нет, потому что Core Data выполнит только одну миграцию.