Foundation框架NSDictionary

来源:互联网 发布:冒险岛2韩服pk数据榜 编辑:程序博客网 时间:2024/05/16 11:14

集合——字典

字典是由键--值对组成的数据组合。正如我们在字典里查找单词的定义一样。

通过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];

}

 

0 0