NSDictionary setValue:
H

2

10

OK, this is driving me nuts -- please tell me I'm not losing my mind!

I declare:

NSMutableDictionary* generalSettingsDict;

im my .h

I init:

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

in a viewWillAppear

I set:

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

in a method:

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

And I get "NSMutableDictionary may not respond to setValue:forkey:" and the app crashes when it is run.

Please help :(

Hazlip answered 28/7, 2009 at 18:6 Comment(1)
You also have a typo: forKey:, not forkey:. And for the record, NSMutableDictionary does support setValue:forKey:, but I still prefer to use setObject:forKey:.Maganmagana
B
26

A) forkey: should be forKey:. Capitalization is important.

B) setValue:forKey: is a KVC method. It may work as you expect here, but the proper method to use for NSMutableDictionary is setObject:forKey:

Bakelite answered 28/7, 2009 at 18:9 Comment(1)
You'll also find, even after correcting the method name, that KVC keys must be strings. You have to use the native NSMutableDictionary setObject:forKey: method to use arbitrary objects as keys.Voyageur
M
6

You want setObject:forKey:. setValue:forKey: is part of the key-value coding protocol. NSMutableDictionary provides setObject:forKey:.

Maganmagana answered 28/7, 2009 at 18:9 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.