1、字典的概述
字典是键值对组成的数据集合。正如我们在字典查找单词的定义一样。在字典对象中,key的值必须是唯一的。并且不为空(nil)为了表示空值,你可以用NSNull表示。
2、字典的初始化
//初始化字典
NSDictionary *dic1 = [NSDictionarydictionaryWithObject:@"value1"forKey:@"key1"];
NSDictionary *dic2 = [NSDictionarydictionaryWithObjectsAndKeys:@"value2",@"key2",@"value2-1",@"key2-1",@"value2-2",@"key2-2",@"value2-3",@"key2-3",nil];
NSDictionary *dic3 = [NSDictionarydictionaryWithDictionary:dic1];
NSLog(@"dic1=%@",dic1);
NSLog(@"dic2=%@",dic2);
NSLog(@"dic3=%@",dic3);
3、字典的常用方法
NSDictionary *dic = [NSDictionarydictionaryWithObjectsAndKeys:@"value2",@"key2",@"value2-1",@"key2-1",@"value2-2",@"key2-2",@"value2-3",@"key2-3",nil];
//获取字典的数量
NSInteger count = [diccount];
NSLog(@"count=%zi",count);
//获取字典的value
NSString *string = [dicobjectForKey:@"key2-1"];
NSLog(@"string=%@",string);
//获取字典所有的字典的key和value
NSArray *keyArray = [dicallKeys];
NSArray *valueArray = [dicallValues];
NSLog(@"keyArray=%@",keyArray);
NSLog(@"valueArray=%@",valueArray);
4、可变字典(就是可以对字典里面的对象进行add、remove等操作)
//初始化一个可变字典
NSMutableDictionary *mutableDic0 =[[NSMutableDictionaryalloc]initWithObjectsAndKeys:@"v1",@"k1",@"v2",@"k2",@"v3",
@"k3",@"v4",@"k4",
@"v5",@"k5",nil];
//初始化一个空的字典
NSMutableDictionary *mutableDic1 = [NSMutableDictionary dictionary];
//将空字典mutableDic1内容设置成与mutableDic对象内容相同
//注意如果不是空的字典那么在新的字典mutableDic1将会移除原有的内容
[mutableDic1setDictionary:mutableDic0];
NSLog(@"mutableDic1=%@",mutableDic1);
//删除指定key 的键和值
[mutableDic1removeObjectForKey:@"k5"];
NSLog(@"mutableDic1=%@",mutableDic1);
//删除一组的键和值
NSArray *keys = [NSArrayarrayWithObjects:@"k1",@"k2",nil];
[mutableDic1removeObjectsForKeys:keys];
NSLog(@"mutableDic1=%@",mutableDic1);
//删除字典所有内容
[mutableDic1allKeys];
NSLog(@"mutableDic1=%@",mutableDic1);
5、遍历字典
//遍历字典
//初始化一个可变字典
NSMutableDictionary *mutableDic0 =[[NSMutableDictionaryalloc]initWithObjectsAndKeys:@"v1",@"k1",@"v2",@"k2",@"v3",
@"k3",@"v4",@"k4",
@"v5",@"k5",nil];
//使用枚举类型
NSEnumerator *enumerator = [mutableDic0keyEnumerator];//返回一个key的枚举对象
id key;
//nextObject 访问下一个key
//当key为空的时候就跳出循环
while (key=[enumeratornextObject]) {
id obj3 = [mutableDic0objectForKey:key];
NSLog(@"obj3=%@",obj3);
}
//快速枚举遍历
for (id keyin mutableDic0) {
NSString *obj1 = [mutableDic0objectForKey:key];
NSLog(@"obj1=%@",obj1);
}
//使用枚举器遍历
for (int index=0; index<[mutableDic0count]; index++) {
NSString *obj = [mutableDic0objectForKey:[[mutableDic0 allKeys] objectAtIndex:index]];
NSLog(@"obj=%@",obj);
}
6、字典练习
/*
1、定义一个可变字典
2、利用forin输出字典中的键值
3、对字典增删操作并输出
*/
NSMutableDictionary *mDic1 = [NSMutableDictionarydictionaryWithObjectsAndKeys:@"元芳",@"狄仁杰",@"展昭",@"包拯",@"毛利",@"柯南",nil];
NSArray *keys = [mDic1allKeys];
for (NSString *keyin keys) {
NSString *val = [mDic1valueForKey:key];
NSLog(@"%@问:%@,你怎么看",key,val);
}
// NSMutableDictionary *mDic2 = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"小胖",@"大胖", @"萝卜",@"大坑",nil];
// [mDic1 addEntriesFromDictionary:mDic2];
[mDic1setObject:@"小胖"forKey:@"大胖"];
[mDic1setObject:@"萝卜"forKey:@"坑"];
NSLog(@"______________________");
keys = [mDic1allKeys];
for (NSString *keyin keys) {
NSString *val = [mDic1valueForKey:key];
NSLog(@"%@问:%@,这事你怎么看",key,val);
}
NSLog(@"++++++++++++++++++++");
[mDic1 removeObjectForKey:@"坑"];
keys = [mDic1allKeys];
for (NSString *keyin keys) {
NSString *val = [mDic1valueForKey:key];
NSLog(@"%@问:%@,这事你怎么看",key,val);
}