Базовые данные - получение атрибута из отношения один ко многим - PullRequest
0 голосов
/ 28 января 2011

Допустим, у нас есть следующая модель:

Сущность1 : Лицо
Отношения : куртки

Сущность2 : Куртка
атрибут : размер
отношения : владелец

Итак, мы имеем:
владелец <- >> куртки (у каждого человека может быть много курток, но у куртки может быть только один владелец)

Давайте настроим NSTableView с 2 столбцами. Я связываю первый, чтобы показать всем людям. Затем я хочу, чтобы во втором столбце отображались размеры жакетов, принадлежащих выбранному владельцу, в первом столбце. Получить первый столбец тривиально, но как связать второй? Нужен ли мне другой NSArrayController для представления сущностей Jackets, или я могу сделать это напрямую, используя нечто похожее (это не сработало), связывающее столбец с Persons NSArrayController и под ключом привязки контроллера значения: selection & Model Key Путь :ограммаObjects.size. Когда я пытаюсь это сделать, я получаю сообщение об ошибке:

[addObserver: forKeyPath: @ "managedObjects.Jacket.size" параметры: 0x0 контекст: 0x0] было отправлено объекту, который не совместим с KVC для свойства "agedObjects ".

Спасибо, Hans

Ответы [ 2 ]

0 голосов
/ 03 февраля 2011

Я наконец решил это.Я сделал две ошибки:

  1. Я пытался построить древовидную структуру в одном NSTableView.Поскольку это не поддерживает, у меня было 3 экземпляра в первом и сотни во второй таблице.

  2. Мне пришлось связать новый NSArrayController со вторым NSTableView и связать его набор содержимого с выбором моего Jackets NSArrayController.

Вот и все!

0 голосов
/ 28 января 2011

Вы можете пройтись по курткам человека, просто позвонив aPerson.jackets:

NSMutableString *allSizes = [NSMutableString string];
for (Jacket *jacket in aPerson.jackets){
  allSizes = [allSizes stringByAppendingString: jacket.size];
}
//Show allSizes in the second column
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...