NSDictionary nicht Schlüsselwert Codierung kompatibel für den Schlüssel Test

7

Ich versuche, NSDictionary so zu benutzen, dass ich NSArrays darin speichern kann, aber ich kann es nicht einmal für Strings arbeiten lassen.

%Vor%

Für den obigen Code erhalte ich die Fehlermeldung
Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[<__NSDictionaryI 0x8b86540> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key Test.'

Warum sollte ein NSString * nicht als Schlüssel funktionieren? Genau das verlangt die Methode.

    
Inbl 24.02.2014, 17:22
quelle

2 Antworten

21

NSDictionary ist unveränderlich, Sie können also keinen Wert darauf setzen.
Verwende NSMutableDictionary

%Vor%

Ich schließe @ Martins Kommentar hier ein

Zusätzlich: Verwenden Sie setObject:forKey , um Wörterbuchwerte festzulegen. setValue:forKey wird nur für "Schlüsselwertcodierung" benötigt . setObject:forKey würde auch ein besseres error message ergeben, wenn es auf ein unveränderliches Wörterbuch angewendet wird.

    
santhu 24.02.2014, 17:23
quelle
1

Auch für Wörterbücher ist KVC eine ineffiziente Möglichkeit, Schlüssel / Wert-Paare zu setzen. Besser die NSMutableDictionary-Methode setObject: forKey:

verwenden     
Duncan C 24.02.2014 17:26
quelle