[ACCEPTED]-Add values in NSMutableDictionary in iOS with Objective-C-nsmutabledictionary
You'd want to implement your example along 5 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 4 or other primitives directly in a NSMutableDictionary
, hence 3 the need to wrap them in an NSNumber
object, and 2 make sure you call [myDictionary release]
when you've finished 1 with the dictionary).
The other answers are correct, but there 4 is more modern syntax for this now. Rather 3 than:
[myDictionary setObject:nextValue forKey:myWord];
You can simply say:
myDictionary[myWord] = nextValue;
Similarly, to get 2 a value, you can use myDictionary[key]
to get the value (or 1 nil).
Yep:
- (id)objectForKey:(id)key;
- (void)setObject:(id)object forKey:(id)key;
setObject:forKey:
overwrites any existing object with 4 the same key; objectForKey:
returns nil
if the object doesn't 3 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 2 there exists a more compact approach:
[dict
setObject:
[NSNumber numberWithInteger:([[dict objectForKey:@"key"] integerValue] + 1)]
forKey:
@"key"
];
Crazy 1 indentation for readability.
More Related questions
We use cookies to improve the performance of the site. By staying on our site, you agree to the terms of use of cookies.