How can I convert an NSDictionary to an NSMutableDictionary?
Asked Answered
A

4

45

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?

Antennule answered 5/9, 2011 at 23:21 Comment(1)
possible duplicate of Set an NSMutableDictionary variable to an NSDictionaryHartle
G
138

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.

Ganof answered 5/9, 2011 at 23:22 Comment(3)
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.Maisiemaison
@Maisiemaison - 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.Baste
@Maisiemaison - I wanted to achieve what you said, have a dictionary that has an array and other dictionaries, need to make all children mutable inherently.Baste
K
8

In case of Swift

var tempDic: NSMutableDictionary = yourDictionary.mutableCopy() as NSMutableDictionary
Kurtzman answered 28/1, 2015 at 6:51 Comment(0)
O
2

Try this in swift 3

let mutableDic: NSMutableDictionary =  (yourDictionary as! NSDictionary).mutableCopy() as! NSMutableDictionary
Overhasty answered 10/2, 2019 at 17:43 Comment(0)
A
1
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.

Apotheosis answered 3/11, 2020 at 16:34 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.