У меня есть объект (например, сотрудник) в управляемой объектной модели, который связан с двумя другими объектами (например, отделом и командой). Оба отношения являются отношениями «один ко многим» (т. е. у сотрудника должен быть один отдел и одна команда, у команд и отделов много сотрудников). Они могут пересекаться или не пересекаться (например, команда может состоять из сотрудников отдела кадров, бухгалтерии и ИТ или может состоять только из нескольких сотрудников одного отдела).
Department <-->> Employee <<--> Team
У меня есть два NSArrayController, предоставляющих данные для двух NSTableView, таблицы отдела и таблицы группы. Сотрудники могут без проблем перемещаться между отделами и между командами, но я не знаю, как удалить (уволить) сотрудника.
Если я отправлю любому из контроллеров массива сообщение об удалении, сотрудник будет исключен из команды (например), но останется в отделе, а граф объектов будет в несогласованном состоянии. Даже если я вызываю действие удаления на обоих контроллерах, объект не удаляется — он становится осиротевшим и просто висит в подвешенном состоянии.
Первоначально у меня были отношения «Отдел и команда» (объекта «Сотрудник»), установленные на правило удаления Nullify, но даже изменение одного или обоих на каскадное не помогает.
Нужно ли мне переопределять действие remove: на контроллерах массива, чтобы фактически удалить сотрудника, или я упускаю что-то действительно очевидное?