字典(NSDictionary)
字典是由 键——值 对应组成的数据集合,通过键(key)查找对应的值(value),key 通常是字符串对象,也可以是其他任意类型对象。字典也分别有不可变(NSDictionary)和可变(NSMutableDcitionary)
在一个字典对象中,key 的值必须是唯一的,字典对象的 key 和 value 都不可以为空(nil),如果需要在一个字典对象中表示一个空值。可以使用 NSNull 对象。
不可变字典(NSDictionary)
1.创建一个不可变字典
//创建一个只有一对键值的字典
NSDictionary *dic1 = [NSDictionary dictionaryWithObject:@"value" forKey:@"k1"];
//创建一个有多对键值的字典
NSDictionary *dic2 = [NSDictionary dictionaryWithObjectsAndKeys:@"v1",@"k1",@"v2",@"k2",@"v3",@"k3",@"v4",@"k4", nil];
//使用一个字典创建一个新字典
NSDictionary *dic3 = [NSDictionary dictionaryWithDictionary:dic1];
2.获取字典中有多少对键值
NSInteger count = [dic2 count];
3.通过 key 获取对应的 value 值
NSObject *value = [dic2 objectForKey:@"k2"];
4.获取所有 key 的数组
NSArray *arrKeys = [dic2 allKeys];
5.获取所有 value 的数组
NSArray *arrValues = [dic2 allValues];
可变字典(NSMutableDctionary)
1.创建一个可变字典
//创建一个只有一对键值的可变字典
NSMutableDictionary *dic1 = [NSMutableDictionary dictionaryWithObject:@"v5" forKey:@"k5"];
//创建一个有多对键值的可变字典
NSMutableDictionary *dic2 = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"v1",@"k1",@"v2",@"k2",@"v3",@"k3",@"v4",@"k4", nil];
//创建一个空的可变字典
NSMutableDictionary *dic3 = [NSMutableDictionary dictionary];
2.向一个字典中添加另一个字典
[dic2 addEntriesFromDictionary:dic1];
3.向一个字典中添加一对键值
[dic2 setValue:@"f3" forKey:@"s3"];
4.删除字典中 key 对应的值
[dic3 removeObjectForKey:@"k1"];
5.根据数组中数据(key)删除字典中对应的值
NSArray *array = [NSArray arrayWithObjects:@"k5", nil];
[dic1 removeObjectsForKeys:array];
6.删除字典中的所有对象
[dic3 removeAllObjects];
遍历字典
1.快速遍历
for (id key in dic2) {
NSString *object = [dic2 objectForKey:key];
NSLog(@"object-dic2: %@", object);
}
2.通过 NSEnumerator 进行遍历
NSDictionary *dic = [NSDictionary dictionaryWithObjectsAndKeys:@"v1",@"k1",@"v2",@"k2",@"v3",@"k3",@"v4",@"k4", nil];
NSEnumerator *enumKey = [dic keyEnumerator];
NSEnumerator *enumValue = [dic objectEnumerator];
for (NSObject *objKey in enumKey) {
NSLog(@"key:%@",objKey);
}
for (NSObject *objValue in enumValue) {
NSLog(@"Value:%@",objValue);
}