2015-03-11 2 views
0

Я знаю, что легкая миграция может обрабатывать эти вещи:легкий миграции необходимо при изменении правил проверки в Core Data

  • Добавление или удаление сущности, атрибут или отношения
  • Создание атрибута не опциональным с значение по умолчанию
  • Создания не-необязательного атрибута опционального

Но нам нужны легкие миграции для изменения правил проверки?

И как справиться с ситуацией, когда мы определили что-то вроде этого:

Атрибут является целым числом, а его минимальное значение равно 0, а максимальное значение равно 100. И есть некоторые значения от 0 до 100 загруженных в постоянное хранилище. Затем мы меняем правило, которое устанавливает минимум 20 и максимум 50 для этого атрибута.

Как основные данные ответят на это изменение, потому что теперь будут данные с недопустимыми значениями? Как обращаться с этим, если необходимо?

ответ

1

Во-первых, нет, вам нужно не до версии модели Core Data и использование облегченной миграции, если вы просто хотите включить новые правила проверки. Изменение правил проверки не изменит модель, так что она откроется просто отлично.

Для старых данных, которые не соответствуют валидации, сначала ничего не должно происходить. Core Data не затрагивает записи, которые не нужно изменять. Обычно проверка выполняется во время операции save.

Это означает, что при следующем сохранении вас будет получить ошибку проверки. Одним из решений было бы перебрать все затронутые данные при запуске приложения после изменения правил проверки и save перед внесением любых дополнительных изменений в данные.

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