将NSDictionary转换为NSMutableDictionary时,如何影响更改?

时间:2013-09-03 13:46:30

标签: iphone ios objective-c

我有一个NSDicitonary,我将其转换为NSMutableDictionary。我正在尝试对NSMutableDictionary进行更改,现在即使在NSDictionary中我如何影响这些更改?

NSDictionary *dct=[[NSDictionary alloc] initWithObjectsAndKeys:@"varun",@"name",@"9703507750",@"mobileNo",nil];

NSLog(@"dct : %@",dct);
dctMute=[[NSMutableDictionary alloc] init];

dctMute=[dct mutableCopy];
NSLog(@"dctMute :  %@",dctMute);

[dctMute setObject:@"hyderabad" forKey:@"city"];
[dctMute setObject:@"varun kumar" forKey:@"name"];
NSLog(@"dctMute after adding city:  %@",dctMute);

4 个答案:

答案 0 :(得分:2)

您不需要可变副本。创建一个可变字典,然后将其变为不可变:

NSMutableDictionary *dctMute = [NSMutableDictionary dictionary];
dctMute[@"foo"] = @"bar";
NSDictionary *immutableDictionary = [NSDictionary dictionaryWithDictionary:dctMute];

使用新语法,您也可以这样初始化:

NSDictionary *immutableDictionary = @{@"foo": @"bar"};

答案 1 :(得分:0)

你可以将你的dctMute放到你的dct,

dct= dctMute;

答案 2 :(得分:0)

你可以转换

NSDictionary *dic.....;
NSMutableDictionary *mutableDic = [dic mutableCopy];

您可以使用NSMutableDictionary进行任何更改,但不能使用NSDictionary进行任何更改。如果对NSMutableDictionary进行任何更改,则不会对NSDictionary产生影响。

答案 3 :(得分:0)

我认为您的问题是“如何从NSMutableDictionary创建NSDictionary?”答案很简单 - 使用复制方法。复制始终返回不可变对象。

NSDictionary *dct=[[NSDictionary alloc] initWithObjectsAndKeys:@"varun",@"name",@"9703507750",@"mobileNo",nil];

NSMutableDictionary dctMute=[dct mutableCopy];
NSLog(@"dctMute :  %@",dctMute);

[dctMute setObject:@"hyderabad" forKey:@"city"];
[dctMute setObject:@"varun kumar" forKey:@"name"];
NSLog(@"dctMute after adding city:  %@",dctMute);

dct = [dctMute copy];