0

我有一个 NSDictionary,其中包含有关我收音机中记忆的信息。存储器排列在标有“A”到“E”的库中。我的 NSDictionary 有 5 个条目,每个条目的“键”都是银行标签(“A”、“B”等)。“值”是一个数组,其中包含一个类的实例以及有关该内存的所有信息。

我还有一个单独的 NSArray,它只保存银行的标签,“A”,B”等。

NSDictionary 和 NSArray 都是我的类中可以从表单访问的属性。

在我的表单上,我有一个 NSArrayController 绑定到 NSArray ,后者又绑定到 NSPopupButton 以选择我想要处理的“银行”。这很好用,当我选择不同的条目时,我可以看到保存银行名称的字符串发生变化。

该表单还有一个绑定到 NSDictionary 的 NSDictionaryController。我的意图是通过其 NSPopupButton 选择“银行”,然后过滤 NSDictionaryController 以仅显示 NSArray 中与所选银行键对应的“值”的条目。

(我希望这是有道理的!)

但是,我不知道如何填写绑定字段以根据当前选择的 NSArrayController 值过滤 NSDictionaryController。

欢迎任何指示和建议。

苏珊

4

1 回答 1

0

不需要一个NSDictionaryController. 只需将另一个绑定NSArrayController到控制器中的属性,例如bankObjects. 假设您的银行字典被调用banks并且您有一个名为的字符串,该字符串selectedBankName由您的弹出窗口以符合 KVO 的方式设置,您可以bankObjects像这样实现:

- (NSArray *)bankObjects {

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

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

第二种方法会自动发出信号,表明当selectedBankName发生变化时,也会发生bankObjects变化。第一个方法bankObjects基于selectedBankName.

于 2013-10-11T01:18:17.007 回答