0

ラジオの思い出に関する情報を保持する NSDictionary があります。メモリは、「A」から「E」までのラベルが付いたバンクに配置されます。私の NSDictionary には、それぞれの「キー」が銀行ラベル (「A」、「B」など) の 5 つのエントリがあります。「値」は、そのメモリに関するすべての情報を含むクラスのインスタンスを含む配列です。

また、バンク「A」、「B」などのラベルを保持する別の NSArray もあります。

NSDictionary と NSArray はどちらも、フォームからアクセスできるクラスのプロパティです。

私のフォームでは、NSArray にバインドされた NSArrayController があり、これが NSPopupButton にバインドされて、対処したい「銀行」を選択します。これはうまく機能し、別のエントリを選択すると、銀行名を保持する文字列が変化することがわかります。

フォームには、NSDictionary にバインドされた NSDictionaryController もあります。私の意図は、その NSPopupButton を介して「銀行」を選択し、NSDictionaryController をフィルタリングして、選択した銀行キーに対応する「値」である NSArray 内のエントリのみを表示することです。

(これが理にかなっていることを願っています!)

ただし、現在選択されている NSArrayController の値に基づいて NSDictionaryController をフィルター処理するためにバインディング フィールドに入力する方法については行き詰まっています。

任意のポインタや提案を歓迎します。

スーザン

4

1 に答える 1

0

必要はありませんNSDictionaryControllerNSArrayControllerコントローラーのプロパティに別のものをバインドするだけbankObjectsです。また、banks 辞書が呼び出され、KVO 準拠の方法でポップアップによって設定されたbanks名前付きの文字列があると仮定すると、次のように実装できます。selectedBankNamebankObjects

- (NSArray *)bankObjects {

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

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

selectedBankName2 番目の方法は、変更時に自動的にbankObjects変更されることを通知します。そして、最初のメソッドはbankObjectsに基づいて戻りますselectedBankName

于 2013-10-11T01:18:17.007 に答える