Это вопрос для Objective-J/Cappuccino, но я добавил тег cocoa, так как структуры настолько похожи.Управление обратными отношениями без CoreData
Одним из недостатков Cappuccino является то, что CoreData еще не портирована, поэтому вы должны вручную создать все объекты модели.
В CoreData ваши обратные отношения управляются автоматически для вас ... если вы добавите объект ко многим отношениям в другой объект, вы можете пересечь график в обоих направлениях.
Без CoreData, есть ли какой-либо чистый способ автоматически установить эти обратные отношения?
Для более конкретного примера рассмотрим типичный пример Департамента и служащих. Чтобы использовать терминологию рельсов, в объекте «Департамент» есть много сотрудников, а сотрудник принадлежит к отделу.
Таким образом, наша модель отдела имеет «сотрудников» NSMutableSet (или CPMutableSet), который содержит набор сотрудников, а наша модель Employee имеет переменный «отдел», который указывает на модель Департамента, которая ее владеет.
Есть ли простой способ сделать это так, что, когда я добавлю новую модель Employee в набор, автоматически устанавливается обратная связь (employee.department)? Или наоборот: если я устанавливаю модель отдела сотрудника, он автоматически добавляется к набору сотрудников этого отдела?
Правильно знаю, что я делаю объект «ValidatedModel», что все мои подклассы моделей, который добавляет несколько методов, которые устанавливают обратные отношения, используя KVO. Но я боюсь, что у меня много бессмысленной работы, и что уже есть более простой способ сделать это.
Может ли кто-нибудь оставить мои проблемы на отдыхе?
Спасибо, это в основном то, что я делаю. (За исключением использования KVO для запуска при изменении любой из сторон и добавлении другого.) Так что, похоже, я на правильном пути, спасибо. –
Если это то, что вы делаете, вы на правильном пути. Я думаю, что мой подход _may_ будет немного легче только из-за накладных расходов на выполнение KVO, но любой из них должен работать нормально. – Alex
Основная причина, по которой я использую KVO, заключается в том, что у меня нет модификации созданных аксессуаров. Вместо этого в моем методе init я вызываю метод, описывающий тип отношения, какое свойство использовать и каково свойство обратной зависимости. Это автоматически настраивает наблюдателей и т. Д. Я поделюсь над кодом после того, как у меня все получится. –