30

I want to insert a key with a corresponding value in an existing dictionary...

I am able to set values for existing keys in the dictionary, but I am not able to add a new key value...

Any help would be appreciated.

Conner
  • 30,144
  • 8
  • 52
  • 73
Linux world
  • 3,750
  • 11
  • 44
  • 59

4 Answers4

52

Use NSMutableDictionary

NSMutableDictionary *yourMutableDictionary = [NSMutableDictionary alloc] init];
[yourMutableDictionary setObject:@"Value" forKey:@"your key"];

Update for Swift:

The following is the exact swift replica for the code mentioned above

var yourMutableDictionary = NSMutableDictionary()
yourMutableDictionary.setObject("Value", forKey: "Key")

But i would suggest you to go with Swift Dictionary way.

var yourMutableDictionary = [String: AnyObject]() //Open close bracket represents initialization

//The reason for AnyObject is a dictionary's value can be String or
//Array or Dictionary so it is generically written as AnyObject

yourMutableDictionary["Key"] = "Value"
ipraba
  • 16,485
  • 4
  • 59
  • 58
2
NSMutableDictionary *dict = [[NSMutableDictionary alloc]init];

By using this method we can add the new value to NSMutableDictionary

[dict setObject:@"Value" forKey:@"Key"];

To know wheather the key exist in dictionary

[[dict allKeys] containsObject:@"key"];
Madhu
  • 2,565
  • 2
  • 25
  • 32
2

Hi I am getting the content from json in the format of dictionary and from that i am adding the content into some other dictionary

  //here contract is my json dictionary 
  NSArray *projectDBList =[contract allKeys];//listing all the keys in dict 

  NSMutableDictionary *projectsList=[[NSMutableDictionary alloc]init];

  [projectDBList enumerateObjectsUsingBlock:^(NSString * obj, NSUInteger idx, BOOL *stop) {

  [projectsList setObject:[contract objectForKey:obj] forKey:obj];

  }];
user3540599
  • 721
  • 9
  • 6
2

NSDictionnary is immutable. Use NSMuteableDictiory instead.

adding Objects: setObject:forKey:

Testing if key is present:

[[aDict allKeys] containsObject:@"key"];
Zoe
  • 27,060
  • 21
  • 118
  • 148
vikingosegundo
  • 52,040
  • 14
  • 137
  • 178