【问题标题】:Filtering NSDictionary entries based on NSArray Selection根据 NSArray 选择过滤 NSDictionary 条目
【发布时间】:2013-10-11 00:41:30
【问题描述】:

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

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

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

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

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

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

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

欢迎任何指点和建议。

苏珊

【问题讨论】:

    标签: objective-c


    【解决方案1】:

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

    - (NSArray *)bankObjects {
    
        return  banks[selectedBankName];
    }
    + (NSSet *)keyPathsForValuesAffectingBankObjects {
    
        return [NSSet setWithObjects:@"selectedBankName",nil];
    }
    

    第二种方法自动发出信号,当selectedBankName 发生变化时,bankObjects 也会发生变化。第一种方法根据selectedBankName返回bankObjects

    【讨论】:

      猜你喜欢
      • 2010-10-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-02
      • 2018-04-05
      • 1970-01-01
      • 1970-01-01
      • 2012-05-17
      相关资源
      最近更新 更多