8

OK, das macht mich verrückt - bitte sag mir, ich verliere meinen Verstand nicht!NSDictionary setValue:

Ich erkläre:

NSMutableDictionary* generalSettingsDict; 

im meinem .h

I init:

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

in einem viewWillAppear

I gesetzt:

[generalSettingsDict setValue:[NSNumber numberWithBool:control.on] 
         forkey:[NSNumber numberWithInt:control.tag]]; 

in einem Verfahren:

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

Und ich "NSMutableDictionary kann nicht auf setValue antworten: forKey:" und die App stürzt ab, wenn es ausgeführt wird.

Bitte helfen :(

+1

Sie haben auch einen Tippfehler: forKey :, nicht forkey :. Und für den Datensatz unterstützt "NSMutableDictionary" 'setValue: forKey:', aber ich bevorzuge immer noch 'setObject: forKey:'. – Alex

Antwort

25

A) forkey: sollte forKey: sein. Großschreibung ist wichtig.

B) setValue:forKey: ist eine KVC-Methode. Es funktioniert möglicherweise wie Sie hier erwarten, aber die richtige Methode für NSMutableDictionary ist setObject:forKey:

+0

Sie werden auch nach der Korrektur des Methodennamens feststellen, dass KVC-Schlüssel Zeichenfolgen sein müssen. Sie müssen die systemeigene Methode NSMutableDictionary 'setObject: forKey:' verwenden, um beliebige Objekte als Schlüssel zu verwenden. – Chuck

+0

Ich denke ich brauche etwas Schlaf !!! Vielen Dank! –

4

Sie wollen setObject:forKey:. setValue:forKey: ist Teil des Schlüssel-Wert-Codierung Protokoll. NSMutableDictionary bietet setObject:forKey:.