2013-10-11 6 views
0

У меня есть NSDictionary, в котором хранится информация о памяти на моем радио. Воспоминания расположены в банках с надписью «A» через «E». В моем NSDictionary есть 5 записей с ключом, для каждого из которых есть метка банка («A», «B» и т. Д.). «Значение» - это массив, содержащий экземпляры класса со всей информацией об этой памяти.Фильтрация записей NSDictionary на основе выбора NSArray

У меня также есть отдельный NSArray, что просто держит этикетки на банки, «A», B»и т.д.

И NSDictionary и NSArray является свойством в моем классе, которые могут быть доступны из формы.

В моей форме у меня есть NSArrayController, связанный с NSArray, который в свою очередь связан с NSPopupButton, чтобы выбрать «банк», который я хочу адресовать. Это работает хорошо, и я вижу строку, в которой изменяется имя банка, когда я выбираю различные записи.

Форма также имеет NSDictionaryController, связанный с NSDictionary. заключается в том, чтобы выбрать «банк» через свой NSPopupButton, а затем отфильтровать NSDictionaryController, чтобы отображать только записи в NSArray, который является соответствующим «значением» выбранному ключу банка.

(я надеюсь, что это имеет смысл!)

Однако я застрял о том, как заполнять поля привязок для фильтрации NSDictionaryController на основе выбранного значения NSArrayController.

Любые указатели и предложения будут приветствоваться.

Susan

ответ

0

Нет необходимости в NSDictionaryController. Просто привяжите еще один NSArrayController к собственности вашего контроллера, скажем bankObjects. И если предположить ваших банков словарь называется banks и у вас есть строка с именем selectedBankName, который устанавливается вашим всплывающее окно в податливой манере КВО, вы можете реализовать bankObjects так:

- (NSArray *)bankObjects { 

    return banks[selectedBankName]; 
} 
+ (NSSet *)keyPathsForValuesAffectingBankObjects { 

    return [NSSet setWithObjects:@"selectedBankName",nil]; 
} 

Второй метод автоматически сигнализирует, что когда selectedBankName изменения , bankObjects изменение тоже. И первый метод возвращает bankObjects на основе selectedBankName.

Смежные вопросы