Код =134110 - Ошибка проверки при отсутствии значений атрибута в обязательном атрибуте назначения

Контекст:

  • приложение, использующее CoreData
  • некоторая облегченная миграция, успешно выполненная в прошлом (достигнута 4-я итерация модельной версии)
  • клиент хочет новую функцию
    • создал 5-ю версию модели
    • добавил одно единственное паршивое новое свойство, необязательное логическое значение с именем new_one, к сущности TestModel

Исход:

CoreData: error: NSUnderlyingError = "Error Domain=NSCocoaErrorDomain Code=134110 \"An error occurred during persistent store migration.\" 

UserInfo={

entity= TestModel, 

attribute=new_one, 

reason=Validation error missing attribute values on mandatory destination attribute}";

}

Решение:

Я не совсем понимаю, почему это происходит (я слишком устал и хочу оставить эту проблему позади), но вещь "обязательный атрибут назначения" указала мне в направлении установки свойства как необязательного. Будь то правильная вещь или просто обычный взлом... я не знаю... но это решило мою проблему, теперь я могу перейти к следующему

1 ответ

Решение

Ты сильно ударился ногтем по голове, но, может быть, ты не знаешь почему. Это потому что:

  1. Атрибут был обязательным
  2. Это означает, что оно должно иметь значение при сохранении изменений
  3. Миграция сохраняет изменения, но
  4. Вы не указали никакого значения для этого атрибута.

Это приводит непосредственно к полученной вами ошибке.

Вы можете исправить это с помощью одного из следующих:

  • Сделайте атрибут необязательным, как вы сделали. После миграции никакие перенесенные объекты не имеют значения, но это нормально.
  • Оставьте его необязательным, но укажите значение по умолчанию в редакторе моделей. После миграции все перенесенные объекты имеют значение по умолчанию.
  • Настройте нелегкую миграцию и предоставьте значения при ее миграции. После миграции каждый перенесенный объект имеет любое значение, которое вы предоставляете во время миграции.

Я считаю, что лучше использовать значение по умолчанию, чем лишние опции.

Лучше использовать optional только тогда, когда значение действительно необязательно.

Другие вопросы по тегам