У вас проблема с привязками, а не проблема с базовыми данными.: -)
Вы обязательно должны получить хэндл Привязки какао , прежде чем иметь дело с Базовыми данными.Это указано в документации и очень верно.
Тема вашего вопроса отличается от основной, поэтому я отвечу на оба вопроса.
Показ товарищей по команде
Основные данные в стороне, предположим, что у вас есть таблица, представляющая экземпляры Player.У игрока есть одна команда.В команде много игроков.Следовательно, предполагается, что экземпляр Player имеет в качестве товарищей по команде «team.players» (за исключением самого себя).Независимо от того, используете ли вы Core Data для управления моделью или нет, это относится ко всем отношениям.
Если вы прочитаете и освоите привязки Cocoa, вы обнаружите, что это совсем не сложно установитьиспользование базовой настройки Master / Detail (с дополнительным контроллером массива для детализации, для простоты).Ваш контроллер основного массива представляет все экземпляры Player, в то время как контроллер массива подробных данных представляет товарищей по команде - или «team.players» выбора Мастера (за вычетом самого себя).
Контроллер массива Teammates будет иметь свой объект и контекст управляемого объектанастроить как обычно (см. документы).«ContentSet» будет привязан к «выделенному» ключу контроллера главного массива, с «team.players» в качестве пути ключа модели.
Хитрость заключается в том, чтобы отфильтровать выбранного игрока на главном контроллере, используя предикаты .Это можно сделать с помощью Filter Predicate контроллера массива .Может быть, с форматом «self! =% @», Где «% @» представляет выбор контроллера основного массива.Я оставлю Предикаты (сложная тема для себя) для вас.Помните, что вы можете установить их в коде ([myController setFilterPredicate: myPredicate]) или с помощью привязок.Предикаты также независимы от базовых данных.
Получение выбора
Поскольку контроллер массива отвечает за массив, который представляет таблица, онлучше всего спросить контроллер массива, каков его выбор.Один из способов - запросить его -arrangedObjets для объектов в его -selectedIndexes.
NSArray * selectedObjects = [[myArrayController arrangedObjects] objectsAtIndexes:[myArrayController selectedIndexes]];
Вы также можете запросить его для -selectedObjects.Существуют различия между этими двумя подходами, которые описаны в документации (справка по API и концептуальные документы), которую вы должны обязательно понять, но вопрос о контроллере является наиболее важной концепцией , независимо от того, используете ли вы NSArrayController илинекоторый пользовательский контроллер, соответствующий протоколам и.
Отказ от ответственности: Напечатано на скорую руку после вечернего сакэ.Не проверено на ошибки.: -)