1

我有一个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

4 回答 4

2

您不需要可变副本。创建一个可变字典,然后使其不可变,如下所示:

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

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

NSDictionary *immutableDictionary = @{@"foo": @"bar"};
于 2013-09-03T13:50:02.283 回答
0

你可以把你的 dctMute 放到你的 dct 上,

dct= dctMute;
于 2013-09-03T13:49:15.893 回答
0

你可以转换

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

您可以使用 进行任何更改,NSMutableDictionary但不能使用 进行任何更改 NSDictionary。并且当使用 then 进行任何更改时,NSMutableDictionary 它不会影响NSDictionary.

于 2013-09-03T13:49:24.637 回答
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];
于 2013-09-03T14:10:34.200 回答