Код =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 ответ
Решение
Ты сильно ударился ногтем по голове, но, может быть, ты не знаешь почему. Это потому что:
- Атрибут был обязательным
- Это означает, что оно должно иметь значение при сохранении изменений
- Миграция сохраняет изменения, но
- Вы не указали никакого значения для этого атрибута.
Это приводит непосредственно к полученной вами ошибке.
Вы можете исправить это с помощью одного из следующих:
- Сделайте атрибут необязательным, как вы сделали. После миграции никакие перенесенные объекты не имеют значения, но это нормально.
- Оставьте его необязательным, но укажите значение по умолчанию в редакторе моделей. После миграции все перенесенные объекты имеют значение по умолчанию.
- Настройте нелегкую миграцию и предоставьте значения при ее миграции. После миграции каждый перенесенный объект имеет любое значение, которое вы предоставляете во время миграции.
Я считаю, что лучше использовать значение по умолчанию, чем лишние опции.
Лучше использовать optional только тогда, когда значение действительно необязательно.