Ваши свойства отношений не должны использовать копию. Они должны сохранять, например:
@property (nonatomic, retain) NSSet* categories;
Вы не хотите копировать набор управляемых объектов, поскольку в графе объектов вы получите дубликаты объектов. Это вызовет большие проблемы.
Однако это не является непосредственной проблемой. Непосредственная проблема заключается в том, что что-то заставляет селектор, предназначенный для управляемого объекта, отправляться в сам набор.
Скорее всего, это вызвано непосредственным присвоением скопированного набора взаимосвязи, а не использованием одного из методов доступа, определенных в файле .m
. Директива @dynamic не создаст метод setCategories
, потому что это управляемый объект, поэтому вы не получаете надлежащие уведомления KVO и контекст не обновляется должным образом. Когда он пытается сохранить, он отправляет проверочные сообщения заданному объекту вместо содержащихся в нем объектов.
В файле реализации должен быть метод, подобный addCategoryObjects:
. Удаление копии и использование этих методов должно решить проблему.