根据NSArray Selection过滤NSDictionary条目

时间:2013-10-11 00:41:31

标签: objective-c

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

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

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

在我的表单上,我有一个绑定到NSArray的NSArrayController,后者又绑定到NSPopupButton以选择我要解决的“bank”。这很有效,我可以看到持有银行名称的字符串随着我选择不同的条目而改变。

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

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

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

欢迎任何指示和建议。

苏珊

1 个答案:

答案 0 :(得分:0)

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

- (NSArray *)bankObjects {

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

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

第二种方法会自动发出selectedBankName更改时的信号,bankObjects也会发生变化。第一种方法基于bankObjects返回selectedBankName