OClesson06 字典

字典类

1.字典就是关键字以及存储的数据集合,字典在每个给定关键字下存储一个数值,关键字称为key 数值被称为value,合成键值 因此字典就是管理多个键值对的集合
2.key常常是nsstring类型的字符串,但是value必须是对象
3.键值对在字典中是没有顺序的
4.字典的key不能重复,否则在取值会产生歧义
5.如果有大量数据后频繁查找信息,使用字典效率较高
创建一个不可变字典
NSDictionary *dict = [[NSDictionary alloc]initWithObjectsAndKeys:@"caiji",@"name",@"man",@"gender", nil]; NSLog(@"%@",dict);
添加顺序是value + key;
使用数组创建字典对象
先创建key的数组
NSArray *keyArray = [NSArray arrayWithObjects:@"name",@"age",@"hobby", nil];
创建出value值数组 value中的元素必须和key中数组元素一一对应
NSArray * valueArray = [NSArray arrayWithObjects:@"xiaoming",@"25",@"playing", nil];
使用数组创建字典的方法创建字典对象
NSDictionary *dict1 = [[NSDictionary alloc] initWithObjects:valueArray forKeys:keyArray]; NSLog(@"%@",dict1);
使用一个已知的字典创建一个新字典
NSDictionary *dict2 = [NSDictionary dictionaryWithDictionary:dict1]; NSLog(@"%@",dict2);
创建一个可变字典
NSMutableDictionary *mdict = [NSMutableDictionary dictionaryWithDictionary:dict2]; NSLog(@"%@",mdict);

字典的操作

获取所有的key值 返回值是数组类型
NSArray *keyArray1 = [mdict allKeys]; NSLog(@"%@",keyArray1);
获取所有的value值 返回值是数组类型
NSArray *valueArray1 = [mdict allValues]; NSLog(@"%@",valueArray1);
通过key值取value;
id value = [mdict objectForKey:@"name"]; NSLog(@"%@",value);
给可变字典添加键值对的方法
[mdict setObject:@"xi an" forKeyedSubscript:@"address"]; NSLog(@"%@",mdict);
修改可变字典的value和给字典添加新键值对的方法一样,如果key值以前没有,则该方法没有,则添加该方法,如果有,则修改value;
[mdict setObject:@"20" forKeyedSubscript:@"age"]; NSLog(@"%@",mdict);
删除可变字典的键值对
根据key值来删除key所对应的value
[mdict removeObjectForKey:@"age"]; NSLog( @"%@",mdict);
将若干个key封装在一个数组中 ,然后作为参数传入,删除方法会根据数组中的key删除对应的value
[mdict removeObjectsForKeys:[NSArray arrayWithObjects:@"address",@"hobby", nil]]; NSLog(@"%@",mdict);
删除字典中全部value
[mdict removeAllObjects]; NSLog(@"%@",mdict);

字典遍历

NSDictionary *dict3 = [NSDictionary dictionaryWithObjectsAndKeys:@"zhangsan",@"name",@"23",@"age",@"nan",@"gender", nil];
allkeys方法取key值,并不是按照打印字典key-value顺序取值的
获取到所有的key并且拿到key的个数
NSArray *allKey3 = [dict3 allKeys];
for循环遍历字典
for (int i = 0; i < [allKey3 count]; i++) {
获取到key
NSString *key = [allKey3 objectAtIndex:i];
根据获取到的key访问value
NSString *value = [dict3 objectForKey:key]; NSLog(@"key = %@ value = %@",key,value); } NSLog(@"%@ ",dict3);
使用字典表示城市的区和人口数
NSNumber *person = [NSNumber numberWithInt:100000]; NSDictionary *yanTaArea = [NSDictionary dictionaryWithObjectsAndKeys:@"yanTa",@"areaname",person,@"peopleCount", nil]; NSLog(@"%@",yanTaArea); NSDictionary *weiyang = [NSDictionary dictionaryWithObjectsAndKeys:@"weiyang",@"areaname",@"110000",@"personcount", nil]; NSLog(@"%@",weiyang);
用字典表示一个城市 :城市名,所有市区。
将两个区的信息使用一个数组对象包装起来
NSArray *array = [NSArray arrayWithObjects:yanTaArea,weiyang, nil];
定义一个城市字典,保存城市名和市区
NSDictionary *city = [NSDictionary dictionaryWithObjectsAndKeys:@"xi'an",@"cityName",array,@"cityArea", nil]; NSLog(@"%@",city);

定义一个渭南city
NSDictionary *weiNan = [NSDictionary dictionary];

使用字典表示一个省的名称和所有的城市
NSArray *array1 = [NSArray arrayWithObjects:city,weiNan, nil];
创建城市字典
NSDictionary *province = [NSDictionary dictionaryWithObjectsAndKeys:@"shanxi",@"shengName",array1,@"cityName", nil]; NSLog(@"%@",province);

你可能感兴趣的:(OClesson06 字典)