1、字典类
是用于保存具有映射关系(Key - value)的数据集合
对于name:张三来讲 name就是key key对应的value就是张三
一个Key - value的组合成为是一个条目,字典是存储Key - value对容器
特点:
1、字典key来存储数据(数据通过下标存取元素)
2、key不能重复 value必须是对象(不是对象用NSNumber NSValue转换成对象)
3、键值对在字典中是无序存储的
4、字典也可以分可变和不可变
NSDictionary不可变字典一旦创建 键值对就不能更改不能添加不可以删除 只能读取key或value
NSMutableDictionary可变字典
*/
1、//创建字典 只能成对出现如果出现元素不能出现单数个
NSDictionary *dic = [[NSDictionary alloc]initWithObjectsAndKeys:
@"piao1",@"mingzu1",
@"jianai",@"book2",
@"xiaofuren",@"book3",
@"baoma",@"car1",
@"baoshijie",@"car2",
@"lanbojini",@"car3",nil];
//获取 将创建字典放到数组中
NSArray *key1 = [NSArray arrayWithObjects:dic,dic1, nil];
NSString *ns = [key1 objectAtIndex:1];//获取数组中下标为1的字典
//获取所有key
NSArray *k = [dic1 allKeys];//字典dic1 所有value值
NSLog(@"%@",ns);//输出了数组中下标1的 字典dic1(输出字典中所有key 所有的value值)
NSLog(@"%@",k);//输出了数组中下标1的 字典dic1(只输出字典中所有key对应 的value值)
2、//可变字典NSMutableDictionary 初始化方法 mArray下面例子有用到
NSMutableDictionary *mArray = [[NSMutableDictionary alloc]initWithObjectsAndKeys:@"p",@"mingzu1",
@"j",@"book2",
@"x",@"book3",
@"b",@"car1",
@"b",@"car2",
@"l",@"car3", nil];
3.//便利构造器方法创建一个空字典 创建空的字典,然后设置新的一个字典,把会之前的字典全部覆盖掉
NSMutableDictionary *mdic = [NSMutableDictionary dictionary];
[mdic setValuesForKeysWithDictionary:dic];
对键值对进行曾删 除
4.获取下标book2 对应value值
objectForKey = jianai
NSLog(@"objectForKey = %@", [dic objectForKey:@"book2"]);
[dic objectForKey:@"m"];
//获取下标book2 对应value值中 首字母substringToIndex:1
substringToIndex = j
NSLog(@"substringToIndex = %@", [[dic objectForKey:@"book2"]substringToIndex:1]);
5.向一个字典添加一个字典 意思就是创建一个可变字典 在这个可变字典中再添加一个字典
他和在这个可变字典中添加一个key 和 value 是两回事 如6.
NSDictionary *nsd = [NSDictionarydictionaryWithObject:@"tianjia"forKey:@"add"];
[mArrayaddEntriesFromDictionary:nsd];
NSLog(@"mArray = %@",mArray);
mArray = {
add = tianjia;
book2 = j;
book3 = x;
car1 = b;
car2 = b;
car3 = l;
mingzu1 = p;
}
6.//向字典中添加key value 虽然输出和上面的格式一样,都是添加一个key 一个value
[mArray setValue:@"value" forKey:@"setKey"];
NSLog(@"mArray = %@",mArray);
mArray = {
add = tianjia;
book2 = j;
book3 = x;
car1 = b;
car2 = b;
car3 = l;
mingzu1 = p;
setKey = value;
}
修改Key 对应的value 每个value只有一个key 所以直接用setValue 修改想要的value 和添加value用的方法setValue一样 是添加还是修改 系统会先找key 要是字典中有这个key 对应就是修改 要是没见有这个key 对应就是添加
[mArray setValue:@"LOVE" forKey:@"setKey"];
NSLog(@"LOVEmArrayLOVE = %@",mArray);
LOVEmArrayLOVE = {
add = tianjia;
book2 = j;
book3 = x;
car1 = b;
car2 = b;
car3 = l;
mingzu1 = p;
setKey = LOVE;
}
//移除指定的key value 将key是add 的键值对移除
[mArray removeObjectForKey:@"add"];
NSLog(@"removeObjectForKey = %@",mArray);
add = tianjia; 移除removeObjectForKey = {
book2 = j;
book3 = x;
car1 = b;
car2 = b;
car3 = l;
mingzu1 = p;
setKey = LOVE;
}
//删除字典中所有的value
[mArray removeAllObjects];
NSLog(@"removeAllObjects = %@",mArray);
输出结果为空