Установка свойства в объекте CoreData приводит к ошибке сохранения

Когда я обновляю NSManagedObject и сохраняю его, я получаю сообщение об ошибке: операция не может быть завершена. (Ошибка какао 1560.)

  • объект уже находится в базе данных, поэтому на самом деле я делаю обновление при его сохранении
  • когда я сохраняю объект перед его изменением, ошибок нет
  • Я модифицирую его, задав свойство объекта. Использование KVP дает тот же результат
  • исходное сохранение (объект был создан незадолго до этого) и сохранение после обновления выполняются в основном потоке. К объекту никогда не прикасаются из другого потока.

Метод validateForUpdate: всегда возвращает NO. Я не уверен, должен ли этот метод возвращать YES, даже если объект не был изменен: если объект X сохранен без ошибок, а затем я вызываю validateForUpdate: он возвращает NO.

Любые идеи?


person Clemens    schedule 05.01.2013    source источник
comment
Взгляните на этот пост: stackoverflow.com/questions/1283960/   -  person LombaX    schedule 05.01.2013
comment
Спасибо! Выручила итерация по подробным ошибкам! Атрибут отношения был пустым, но обязательным. Я пока не понимаю, почему при сохранении X вообще не было ошибок. Кажется, что заполнение этого обязательного атрибута не было замечено CoreData до первого последующего обновления. Думаю, это связано с кешированием. В любом случае, я могу исправить свою проблему сейчас.   -  person Clemens    schedule 05.01.2013


Ответы (1)


Изменяемое свойство имеет ограничения на возможное значение. Ваше обновление нарушает их, поэтому вы не можете сохранять недопустимые изменения.

person Eimantas    schedule 05.01.2013
comment
См. stackoverflow.com/questions/ 1283960 / и итерация по подробному Эрросу покажет, в чем проблема. Это не был сам обновленный атрибут. - person Clemens; 05.01.2013