字典存在的价值
1.大容器,用来存储多个数据
2.用来存储的数据具有一一对应关系(使用key来标识value)
3.对于字典的一对键值对(key - value)叫做字典中的一个元素,也叫做一个条目,只要是对象就可以,不限限制类型
4.字典是无序的
5.字典中的key值是唯一的,一个key值只能对应一个value,一个value可以对应多个key
NSDictionary
1.创建字典对象
NSDictionary *dic = [NSDictionary dictionaryWithObjectsAndKeys:@"志远",@"name" ,@20,@"height",@12,@"age",nil];name = 志远
NSLog(@"dic = %@",dic);
(1)便利构造器
(2)初始化方法
NSDictionary *dict = [[NSDictionary alloc]initWithObjectsAndKeys:@"志远",@"name" ,@20,@"height",@12,@"age", nil];
NSLog(@"dict = %@",dict);
2.求字典元素个数
NSInteger count = [dict count];
NSLog(@"count = %ld",(long)count);
3.获取所有的key
NSArray *keys = [dict allKeys];
NSLog(@"keys = %@",keys);
4.根据key获取对应的value(对象)
NSString *name = [dic objectForKey:@"name"];
NSLog(@"name = %@",name);
NSString *height = [dic objectForKey:@"height"];
NSNumber *height = [dic objectForKey:@"height"];
[height length];不能识别的方法发给一个地址
NSLog(@"height = %@",height);
5.字典快速遍历
对于数组来说,遍历得到的是数组中的每一个元素,
对于字典来说,遍历得到的是字典中的key,然后通过key获取value
for (NSString *key in dic) {
检索到key之后,通过objectForKey:获取key对应的value
NSLog(@"%@",[dic objectForKey:key]);
}
对于可变字典来说,必不可变字典多了增加删除,修改操作
1.创建对象
NSMutableDictionary *di = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"xiaoguang",@"guanggun1",@"xiaomeng",@"guanggun2",@"xiaodiao",@"guanggun3", nil];
2.求字典中元素个数
NSLog(@"%ld",[di count]);
3.删除元素
[di removeObjectForKey:@"guanggun1"];
NSLog(@"%@",di);
[di removeAllObjects];
NSLog(@"%@",di);
4.添加元素
[di setObject:@"chengjie" forKey:@"guanggun4"];
NSLog(@"%@",di);
5.修改key中对应的value
[di setObject:@"xiaocui" forKey:@"guanggun4"];
NSLog(@"%@",di);
etObject forKey: 工作原理:现根据指定的key查找字典中是否存在相同的key,(查找字典中是否存在指定的key),如果存在则修改key对应的value,如果没有,则添加一个元素,key-value键值对