Warrior
Warrior

Reputation: 39374

Replace a value in NSDictionary in iPhone

I have a array (dataArray) of NSDictionary "item". It has datas like "david" for key "name" and "85" for key "marks" etc for 5 students. I want to replace the mark of david to 90 with respect to the array index value (ie 0 for dictionary containing david and 85). How can I do it?

The code for content in array is

[item setobject:name forkey:@"Name"];
[item setobject:mark forkey:@"Marks"];
[dataArray addOject:item]

The above code goes inside parsing, so i have array with 5 objects (students), their name and marks, now I want to replace the mark of the first object in the dataArray.

Upvotes: 31

Views: 68088

Answers (5)

Zsivics Sanel
Zsivics Sanel

Reputation: 1067

 // NSDictionary *dict = ...
    NSMutableDictionary *mutableDict = [dict mutableCopy];
    [mutableDict setObject:@"myObject" forKey:@"myKey"];
    dict = [mutableDict mutableCopy];

I hope it helps

Upvotes: 12

Tibidabo
Tibidabo

Reputation: 21571

If you want to update an object in a NSDictionary you should use NSMutableDictionary instead. NSMutableDictionary has the following EXTRA methods

Adding Entries

  • setObject:forKey:
  • setValue:forKey:
  • addEntriesFromDictionary:
  • setDictionary:

Removing Entries

  • removeObjectForKey:
  • removeAllObjects
  • removeObjectsForKeys:

Upvotes: 10

donkim
donkim

Reputation: 13137

Here's what you can do:

NSMutableDictionary *newDict = [[NSMutableDictionary alloc] init];
NSDictionary *oldDict = (NSDictionary *)[dataArray objectAtIndex:0];
[newDict addEntriesFromDictionary:oldDict];
[newDict setObject:@"Don" forKey:@"Name"];
[dataArray replaceObjectAtIndex:0 withObject:newDict];
[newDict release];

Hope this helps!

Upvotes: 74

vodkhang
vodkhang

Reputation: 18741

You first need an NSMutableDictionary with it you can change the key and value.

It would be like this:

NSMutableDictionary *dict = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"david", @"name", "85", @"marks", nil];

[dict setObject:@"90" forKey:@"david"];

Upvotes: 30

mmccomb
mmccomb

Reputation: 13807

[davidsRecord setObject:@"100" forkey:@"mark"];

Upvotes: 1

Related Questions