集合——字典
字典是由键--值对组成的数据组合。正如我们在字典里查找单词的定义一样。
通过key(键),查找对应value(值),key通常是字符串对象,也可以是其他任意类型对象。在一个字典对象中,key的值必须是唯一的。字典对象的键和值不可以为空(nil),如果需要在一个字典对象中表示一个空值(value),可以使用NSNull对象
不可变字典NSDictionary
(集合中只能用对象或类的实例,不可以用基本数据类型)
字典的初始化
NSNumber *numObj = [NSNumber numberWithInt:100]; //把基本数据类型封装成对象
以一个元素初始化
NSDictionary *dic = [NSDictionary dictionaryWithObject:numObj forKey:@"key"];
或NSDictionary *dic1 = [NSDictionary dictionaryWithObject:@"value" forKey:@"k1"];
NSLog(@"dic1 : %@",dic1);
输出为:k1 = value;
初始化两个元素
NSDictionary *dic = [NSDictionary dictionaryWithObjectsAndKeys:numObj,@"valueKey",numObj2,@"valueKey2",nil];
或:NSDictionary *dic1 = [NSDictionary dictionaryWithObjectsAndKeys:@"v1",@"k1",@"v2",@"k2",nil];
初始化新字典,新字典包含otherDic
NSDictionary *dic = [NSDictionary dictionaryWithDictionary:otherDic];
以文件内容初始化字典
NSDictionary *dic = [NSDictionary dictionaryWithContentsOfFile:path];
字典的常用方法
获取字典数量
NSInteger count = [dic count];
通过key获取对应的value对象
NSObject *valueObj = [dic objectForKey:@"key"];
将字典的key转成一个枚举对象,用于遍历
NSEnumerator * enumerator = [dic keyEnumerator];
获取所有键的集合
NSArray *keys = [dic allKeys];
获取所有值的集合
NSArray *values = [dic allValues];
可变字典 NSMutableDictionary常用方法
NSMutableDictionary * mutableDic = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"v1",@"k1",@"v2",@"k2",nil];
NSDictionary * dic3 = [NSDictionary dictionaryWithObject:@"v4",@"k4"];
向字典对象中添加整个字典对象
[mutableDic addEntriesFromDictionary:dic3];
向字典对象中追加一个新的k3,v3
[mutableDic setValue:@"v3"forKey:@"k3"];
初始化一个空的可变字典
NSMutableDictionary *dic1 = [NSMutableDictionary dictionary];
将空字典1对象内容设置与字典mutableDic对象相同
[dic1 setDictionary:mutableDic];
将字典中key1对应的值删除
[dic1 removeObjectForKey:@"key1"];
根据指定的数组(key)移除字典1的内容
NSArray *array = [NSArray arrayWithObjects:@"key1",nil];
[dic removeObjectsForKeys:array];
移除字典所有对象
[dic removeAllObjects];
遍历字典
快速枚举
for(id key in dic){
id obj = [dic objectForKey:key];
NSLog(@"%@",obj);
}
一般的枚举
NSArray *keys = [dic allKeys];
int length = [keys count];
for(int i=0;i<length;i++){
id key = [keys objectAtIndex:i];
id obj = [dic objectForKey:key];
NSLog(@"%@",obj);
}
使用枚举类型
NSEnumerator *enumerator = [mutableDic keyEnumerator];
id key = [enumerator nextObject];
while(key){
id object = [mutableDic objectForKey:key];
NSLog("object : %@",object);
key = [enumerator nextObject];
}