2 qq 29574501 qq_29574501 于 2016.02.28 13:22 提问

ios 往可变字典添加object会覆盖到上一个key的值啊!!怎么解决!有代码~~

self.arr=[NSMutableArray new];
self.dic=[NSMutableDictionary new];
[self.arr addObjectsFromArray:@[@"1",@"2",@"3"]];
[self.dic setObject:self.arr forKey:@"key1"];

[self.arr removeAllObjects];
[self.arr addObjectsFromArray:@[@"3",@"4",@"5"]];
[self.dic setObject:self.arr forKey:@"key2"];

NSLog(@"%@",self.dic);



    输出结果:
    {
key1 =     (
    3,
    4,
    5
);
key2 =     (
    3,
    4,
    5
);

}

5个回答

caozhy
caozhy   Ds   Rxr 2016.02.28 18:51
已采纳

[self.arr removeAllObjects];
->
self.arr=[NSMutableArray new];

u014116643
u014116643   2016.02.29 09:44

oc对象是引用类型的!肯定会跟着变!

dd90702
dd90702   2016.03.01 10:30
_arr1 = [NSMutableArray new];
[self.arr1 addObjectsFromArray:@[@"3",@"4",@"5"]];

[_dic setValue:_arr1 forKey:@"key2"];
    这样不就行了
xiaojiaha123
xiaojiaha123   2016.03.01 11:32

把数组深拷贝一下,然后添加到字典中,就可以了

XiangHongJiang
XiangHongJiang   2016.03.02 13:15

你的字典里存的是同一个地址(对象)的数据(self.arr),所以只要self.arr内容改变,字典的内容就变

可以在第二次set的时候:执行 set:[self.arr copy]或者[self.arr mutableCopy];

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!