黑马程序员技术交流社区
标题:
2014.11.16 关于集合类NSDictionary的总结
[打印本页]
作者:
supergcs
时间:
2014-11-16 10:19
标题:
2014.11.16 关于集合类NSDictionary的总结
一、NSDictionary的简单操作:
字典:
key ----> value
索引 ----> 文字内容
里面存储的东西都是键值对
NSDictionary和它的子类NSMutableDictionary都是以key/value的形式存在
NSDictionary本身为不可变集合
NSDictionary也是无序集合
字典集合中存储的值是以键值对的形式存在,如果存在相同的key那么后面key的值会被覆盖。
但是允许vaule的重复
1、常见创建Dictionary集合的四种方式
// 创建一个空的字典集合类型
NSDictionary *dic = [NSDictionary dictionary]; // 一旦为空 永久为空
// 创建只有一组值的字典集合
NSDictionary *dic1 = [NSDictionary dictionaryWithObject:@"Jack" forKey:@"name"];
// 创建多组值的字典集合
NSDictionary *dict = [NSDictionary dictionaryWithObjects:objects forKeys:keys];
//分开键值内容存
NSArray *keys = @[@"name", @"address"];
NSArray *objects = @[@"jack", @"北京"];
// 创建多个值的字典集合
NSArray *keys = @[@"name",@"address",@"e-mail"];
NSArray *values = @[@"Jack",@"北京",@"jack@163.com"];
NSDictionary *dic3 = [NSDictionary dictionaryWithObjects:values forKeys:keys];
// 通过值/键的方式来创建
NSDictionary *dic4 = [NSDictionary dictionaryWithObjectsAndKeys:
@"Jack",@"name",
@"北京",@"address",
@"jack@163.com",@"e-mail",nil];
// 类似于数组的创建方式 (推荐使用)
NSDictionary *dic5 = @{@"name":@"Jack",
@"address":@"北京",
@"e-mail":@"jack@163.com"};
// 取值:根据相应的Key取出对应的值
NSString *name = [dic1 objectForKey:@"name"]; // 返回 Jack
// 返回键值对的个数
NSUInteger count = dic5.count; // 返回 4
2、遍历NSDictionary数组用两种方式:
// 第一种方式:获取字典中所有的键
NSArray *allKeys = [dic5 allKeys]; // 获取的键在数组中是无序的
for (int i = 0; i < dic5.count; i++) {
NSString *key = allKeys[i];
NSString *value = dic5[key];
NSLog(@"%@-->%@",key,value);
}
// 第二种方式:将字典中的键值对传递给Block中的key和obj
[dic5 enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) {
NSLog(@"%@-->%@",key,obj);
// 遍历一次立即停止
*stop = YES;
}];
其他更多方法
[NSDictionary dictionaryWithObjectsAndKeys:..] : 使用键值对直接创建词典对象,结尾必需使用nil标志结束。
[dictionary count]: 得到词典的键值对数量。
[dictionary keyEnumerator]: 将词典的所有key储存在NSEnumerator中,类似于Java语言中的迭代器。
[dictionary objectEnumerator]: 将词典的所有value储存在NSEnumerator中。
[dictionary objectForKey:key]: 通过传入key对象可以拿到当前key对应储存的值。
二、NSMutableDictionary的基本操作
1、创建可变字典
NSMutableDictionary *mutableDic = [NSMutableDictionary dictionary];
// NSMutableDictionary *mutableDic2 = @{@"name",@"Rose",@"address",@"北京"}; 错误的写法因为右边返回的是不可变的字典
// 为可变字典添加元素
[mutableDic setObject:@"Rose" forKey:@"name"];
[mutableDic setObject:@"北京" forKey:@"address"];
// 移除
[mutableDic removeAllObjects];
[mutableDic removeObjectForKey:@"name"];
// 打印
NSLog(@"%@",mutableDic);
2、设计一个通讯录里面包含了四个人的姓名、电话、地址
NSArray *friends = @[
@{@"name":@"张三",@"phone":@"13993214321",@"address":@"北京"},
@{@"name":@"李斯",@"phone":@"13498766789",@"address":@"上海"},
@{@"name":@"王武",@"phone":@"15898766789",@"address":@"天津"},
@{@"name":@"赵柳",@"phone":@"18798766789",@"address":@"南京"}];
// 获取‘李斯’的通讯录信息
NSDictionary *dic = friends[1];
NSLog(@"%@",dic);
其他更多方法
SMutableDictionary是NSDictionary的子类,所以继承了NSDictionary的方法, 以上的代码对NSMutableDictionary来说完全可用。我们试试不一样的地方
增删键值数据。
[dictionary setObject: forKey:] :向可变的词典动态的添加数据 。
[dictionary removeAllObjects..] : 删除掉词典中的所有数据。
[dictionary removeObjectForKey..] :删除掉词典中指定key的数据。
复制代码
作者:
许庭洲
时间:
2014-11-18 08:30
值得学习ing!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2