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币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
OC字典中添加相同key值需要注意的问题
OC字典中添加相同key值需要注意的问题
iOS开发往字典里面添加数据会出现后面的数据覆盖前面的情况
iOS开发往字典里面添加数据会出现后面的数据覆盖前面的情况
NSArray,NSDictionary的常用方法与可变数组可变字典的常用方法
-- NSArray 1. objectAtIndex:index    访问数组中某个元素 NSArray *array = @[@"元素1", @"元素2"]; NSLog(@"数组中的元素:%@", [array objectAtIndex:1]);运行结果:元素2 2. indexOfObject:(String)   根据数组对象 ,返回对象的下标
iOS开发之 字典和可变字典初解
一、字典 字典 : 字典是由键值对组成的数据集合,key是字符串对象,值可以是其他任意类型,在一个字典中,key必须是唯一的。此外,字典对象的键和值不可以为空,如果需要在一个对象中表示一个控制,可以使用NSNull对象  字典是通过key来取值的   为什么要使用字典?为什么不适用数组?   数组特征: 数组是按照一定顺序取排列的集合,通过下标取存取值(当希望数据是按照一定的顺序去
两种添加字典key的方式
一种直接给字典中没有的key赋值 一种用新的值updateValue forKey得到 第一种 第二种
swift3.0 字典的基本用法
自学swift3.0,如果有什么错误或建议的话欢迎吐槽哦~ //1.字典的定义使用[key:value,key:value]快速定义 let dic:[String:Any] = ["name":"张三","age":22] print(dic) //数组字典 let arrDic:[[String
怎么改变NSDictionary中对应该key的Value
NSDictionary是不可变字典,因此不可以修改,如果要修改请用NSMutableDictionary:     for (NSMutableDictionary *dic in recordFileArray) {                        [dic setObject:@"1" forKey:@"isChecked"];
iOS 字典的 addEntriesFromDictionary使用注意点
NSMutableDictionary *dic1 = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"BMW",@"CarLogo",@"Red",@"CarColor",@"Xiaoming1",@"name", nil]; NSDictionary *dic2 = [NSDictionary dictionary
NSDictionary字典创建,获取,遍历,可变字典的删除 - iOS
字典是以键值对的形式来存储数据 key value1 NSDictionary 字典1.1 创建字典,不可变的NSDictionary * dic = [NSDictionary dictionaryWithObjectsAndKeys:@"xiaozhe",@"name", nil]; NSLog(@"dic %@",dic);2016-08-14 14:44:17.460 07-字典类[232
swift 字典NSDictionary的定义,修改键值,删除/添加键值
// Playground - noun: a place where people can play import UIKit //------------------------------------------------------------------------------ // 1. 定义固定格式的字典 // dict1的所有“键值”类型一致(都是字符串) var dict1