Add values in NSMutableDictionary in iOS with Objective-C Add values in NSMutableDictionary in iOS with Objective-C ios ios

Add values in NSMutableDictionary in iOS with Objective-C


You'd want to implement your example along these lines:

EDIT:

//NSMutableDictionary myDictionary = [[NSMutableDictionary alloc] init];NSMutableDictionary *myDictionary = [[NSMutableDictionary alloc] init];NSNumber *value = [myDictionary objectForKey:myWord];if (value){    NSNumber *nextValue = [NSNumber numberWithInt:[value intValue] + 1];    [myDictionary setObject:nextValue  forKey:myWord];} else{    [myDictionary setObject:[NSNumber numberWithInt:1] forKey:myWord]}

(Note: you can't store ints or other primitives directly in a NSMutableDictionary, hence the need to wrap them in an NSNumber object, and make sure you call [myDictionary release] when you've finished with the dictionary).


The other answers are correct, but there is more modern syntax for this now. Rather than:

[myDictionary setObject:nextValue  forKey:myWord];

You can simply say:

myDictionary[myWord] = nextValue;

Similarly, to get a value, you can use myDictionary[key] to get the value (or nil).


Yep:

- (id)objectForKey:(id)key;- (void)setObject:(id)object forKey:(id)key;

setObject:forKey: overwrites any existing object with the same key; objectForKey: returns nil if the object doesn't exist.

Edit:

Example:

- (void)doStuff {  NSMutableDictionary *dict = [NSMutableDictionary dictionary];  [dict setObject:@"Foo" forKey:@"Key_1"]; // adds @"Foo"  [dict setObject:@"Bar" forKey:@"Key_2"]; // adds @"Bar"  [dict setObject:@"Qux" forKey:@"Key_2"]; // overwrites @"Bar"!  NSString *aString = [dict objectForKey:@"Key_1"]; // @"Foo"  NSString *anotherString = [dict objectForKey:@"Key_2"]; // @"Qux"  NSString *yas = [dict objectForKey:@"Key_3"]; // nil}

Reedit: For the specific example there exists a more compact approach:

[dict  setObject:    [NSNumber numberWithInteger:([[dict objectForKey:@"key"] integerValue] + 1)]  forKey:    @"key" ];

Crazy indentation for readability.