How can I convert an NSDictionary to an NSMutableDictionary?

39,815

Solution 1

Use -mutableCopy.

NSDictionary *d;
NSMutableDictionary *m = [d mutableCopy];

Note that -mutableCopy returns id (Any in Swift) so you will want to assign / cast to the right type. It creates a shallow copy of the original dictionary.

Solution 2

In case of Swift

var tempDic: NSMutableDictionary = yourDictionary.mutableCopy() as NSMutableDictionary

Solution 3

Try this in swift 3

let mutableDic: NSMutableDictionary =  (yourDictionary as! NSDictionary).mutableCopy() as! NSMutableDictionary

Solution 4

NSMutableDictionary *newInfo = [[NSMutableDictionary alloc] init];
[newInfo setDictionary:info];

Also works, since you are setting the dictionary not appending. You can also use:

[newInfo addEntriesFromDictionary:info];

for the same effect and to append to existing content.

Share:
39,815

Related videos on Youtube

Sheehan Alam
Author by

Sheehan Alam

iOS, Android and Mac Developer. i can divide by zero.

Updated on July 09, 2022

Comments

  • Sheehan Alam
    Sheehan Alam almost 2 years

    I have an existing NSDictionary that has:

    {
        "charts_count" = 2;
        "created_at" = "2010-04-12T16:37:32Z";
        exchange = NASDAQ;
        "followers_count" = 259;
        id = 8404;
        industry = "<null>";
        "messages_count" = 1436;
        ric = "GRPN.O";
        sector = "<null>";
        symbol = GRPN;
        title = Groupon;
        "updated_at" = "2011-09-05T04:17:56Z";
    }
    

    How can I take these contents and put it into a new NSMutableDictionary?

  • Vlad
    Vlad almost 9 years
    It should be noted that this will not inherently make the dictionary objects also mutable so if you have a dictionary of arrays of more dictionaries the children will not become mutable.
  • Anand
    Anand about 3 years
    @Vlad - I want to achieve exactly What you said, Need to Make inherently make the dictionary objects also mutable i.e. all children objects of the dictionary should become mutable.
  • Anand
    Anand about 3 years
    @Vlad - I wanted to achieve what you said, have a dictionary that has an array and other dictionaries, need to make all children mutable inherently.