我有一个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);
答案 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];