8

OK, questo mi sta facendo impazzire - per favore dimmi che non sto perdendo la testa!NSDictionary setValue:

dichiaro:

NSMutableDictionary* generalSettingsDict; 

im mio .h

I INIT:

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

in un viewWillAppear

ho impostato:

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

in un metodo:

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

E ho "NSMutableDictionary potrebbe non rispondere a setValue: Forkey:" e l'applicazione si blocca quando viene eseguito.

Aiutateci :(

+1

Hai anche un errore di battitura: forKey :, non forkey :. E per la cronaca, 'NSMutableDictionary' supporta' setValue: forKey: ', ma preferisco comunque usare' setObject: forKey: '. – Alex

risposta

25

A) forkey: dovrebbe essere forKey:. La capitalizzazione è importante.

B) setValue:forKey: è un metodo KVC. Potrebbe funzionare come previsto, ma il metodo corretto da utilizzare per NSMutableDictionary è setObject:forKey:

+0

Troverete anche, anche dopo aver corretto il nome del metodo, che le chiavi KVC devono essere stringhe. Devi usare il metodo nativo NSMutableDictionary 'setObject: forKey:' per usare oggetti arbitrari come chiavi. – Chuck

+0

Penso di aver bisogno di dormire un po !!! Grazie! –

4

Volete setObject:forKey:. setValue:forKey: fa parte del protocollo di valori-chiave di codifica. NSMutableDictionary fornisce setObject:forKey:.