我有一个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。
欢迎任何指示和建议。
苏珊
答案 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
。