8

これは私にナッツを動かしている - 私は私の心を失っていないことを教えてください!NSDictionary setValue:

は私が宣言:

NSMutableDictionary* generalSettingsDict; 

イム私の.h

私はINIT:viewWillAppear

generalSettingsDict = [[NSMutableDictionary alloc] initWithCapacity:5]; 

私が設定:

[generalSettingsDict setValue:[NSNumber numberWithBool:control.on] 
         forkey:[NSNumber numberWithInt:control.tag]]; 
この方法で0

-(void)settingChanged:(UISwitch*)control forEvent:(UIEvent *)event 

そして私は"NSMutableDictionaryは、setValueのに応答しない場合がありますforkey:" GETとアプリがクラッシュし、それが実行されたとき。

:(

+1

です。forKey :, forkey:はありません。レコードの場合、 'NSMutableDictionary'は' setValue:forKey: 'をサポートしていますが、' setObject:forKey: 'を使うのが好きです。 – Alex

答えて

25

A)forkey:forKey:でなければなりません。大文字は重要です。

B)setValue:forKey:は、KVC法である。ここで期待どおりに動作するかもしれませんが、NSMutableDictionaryに使用する適切な方法はsetObject:forKey:

+0

また、メソッド名を修正した後でも、KVCキーは文字列でなければなりません。任意のオブジェクトをキーとして使用するには、ネイティブのNSMutableDictionary 'setObject:forKey:'メソッドを使用する必要があります。 – Chuck

+0

私はいくつかの睡眠が必要だと思います!ありがとうございました! –

4

あなたはsetObject:forKey:をしたい助けてください。setValue:forKey:は、キー値コーディングプロトコルの一部である。NSMutableDictionarysetObject:forKey:を提供します。