问题描述
- 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 );
}
解决方案
[self.arr removeAllObjects];
->
self.arr=[NSMutableArray new];
解决方案二:
oc对象是引用类型的!肯定会跟着变!
解决方案三:
_arr1 = [NSMutableArray new];
[self.arr1 addObjectsFromArray:@[@"3",@"4",@"5"]];
[_dic setValue:_arr1 forKey:@"key2"];
这样不就行了
解决方案四:
把数组深拷贝一下,然后添加到字典中,就可以了
解决方案五:
你的字典里存的是同一个地址(对象)的数据(self.arr),所以只要self.arr内容改变,字典的内容就变
可以在第二次set的时候:执行 set:[self.arr copy]或者[self.arr mutableCopy];
时间: 2024-10-29 11:09:57