A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© supergcs 中级黑马   /  2014-11-16 10:19  /  893 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. 一、NSDictionary的简单操作:

  2. 字典:

  3.      key ----> value

  4.      索引 ----> 文字内容

  5.      里面存储的东西都是键值对



  6. NSDictionary和它的子类NSMutableDictionary都是以key/value的形式存在

  7. NSDictionary本身为不可变集合

  8. NSDictionary也是无序集合

  9. 字典集合中存储的值是以键值对的形式存在,如果存在相同的key那么后面key的值会被覆盖。

  10. 但是允许vaule的重复



  11. 1、常见创建Dictionary集合的四种方式

  12.     // 创建一个空的字典集合类型

  13.     NSDictionary *dic = [NSDictionary dictionary]; // 一旦为空 永久为空

  14.     // 创建只有一组值的字典集合

  15.     NSDictionary *dic1 = [NSDictionary dictionaryWithObject:@"Jack" forKey:@"name"];

  16.     // 创建多组值的字典集合

  17.     NSDictionary *dict = [NSDictionary dictionaryWithObjects:objects forKeys:keys];

  18.     //分开键值内容存

  19. NSArray *keys = @[@"name", @"address"];

  20. NSArray *objects = @[@"jack", @"北京"];

  21.     // 创建多个值的字典集合

  22.     NSArray *keys = @[@"name",@"address",@"e-mail"];

  23.     NSArray *values = @[@"Jack",@"北京",@"jack@163.com"];

  24.     NSDictionary *dic3 = [NSDictionary dictionaryWithObjects:values forKeys:keys];

  25.     // 通过值/键的方式来创建

  26.     NSDictionary *dic4 = [NSDictionary dictionaryWithObjectsAndKeys:

  27.                           @"Jack",@"name",

  28.                           @"北京",@"address",

  29.                           @"jack@163.com",@"e-mail",nil];

  30.    

  31.     // 类似于数组的创建方式 (推荐使用)

  32.         NSDictionary *dic5 = @{@"name":@"Jack",

  33.                            @"address":@"北京",

  34.                            @"e-mail":@"jack@163.com"};

  35.    // 取值:根据相应的Key取出对应的值

  36.     NSString *name = [dic1 objectForKey:@"name"]; // 返回 Jack

  37.     // 返回键值对的个数

  38.     NSUInteger count = dic5.count; // 返回 4

  39.    

  40. 2、遍历NSDictionary数组用两种方式:

  41.     // 第一种方式:获取字典中所有的键

  42.     NSArray *allKeys = [dic5 allKeys]; // 获取的键在数组中是无序的   

  43.     for (int i = 0; i < dic5.count; i++) {

  44.         NSString *key = allKeys[i];

  45.         NSString *value = dic5[key];

  46.         NSLog(@"%@-->%@",key,value);

  47.     }

  48.      // 第二种方式:将字典中的键值对传递给Block中的key和obj

  49.     [dic5 enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) {

  50.         NSLog(@"%@-->%@",key,obj);

  51.      // 遍历一次立即停止

  52. *stop = YES;

  53.     }];



  54. 其他更多方法

  55. [NSDictionary dictionaryWithObjectsAndKeys:..] : 使用键值对直接创建词典对象,结尾必需使用nil标志结束。

  56. [dictionary count]: 得到词典的键值对数量。

  57. [dictionary keyEnumerator]: 将词典的所有key储存在NSEnumerator中,类似于Java语言中的迭代器。

  58. [dictionary objectEnumerator]: 将词典的所有value储存在NSEnumerator中。

  59. [dictionary objectForKey:key]: 通过传入key对象可以拿到当前key对应储存的值。



  60. 二、NSMutableDictionary的基本操作

  61. 1、创建可变字典

  62.    NSMutableDictionary *mutableDic = [NSMutableDictionary dictionary];



  63.     // NSMutableDictionary *mutableDic2 = @{@"name",@"Rose",@"address",@"北京"}; 错误的写法因为右边返回的是不可变的字典



  64.     // 为可变字典添加元素

  65.     [mutableDic setObject:@"Rose" forKey:@"name"];

  66.     [mutableDic setObject:@"北京" forKey:@"address"];

  67.     // 移除

  68.     [mutableDic removeAllObjects];

  69.     [mutableDic removeObjectForKey:@"name"];

  70.     // 打印

  71.     NSLog(@"%@",mutableDic);



  72. 2、设计一个通讯录里面包含了四个人的姓名、电话、地址

  73.     NSArray *friends = @[

  74.          @{@"name":@"张三",@"phone":@"13993214321",@"address":@"北京"},

  75.          @{@"name":@"李斯",@"phone":@"13498766789",@"address":@"上海"},

  76.          @{@"name":@"王武",@"phone":@"15898766789",@"address":@"天津"},

  77.          @{@"name":@"赵柳",@"phone":@"18798766789",@"address":@"南京"}];

  78.    

  79.     // 获取‘李斯’的通讯录信息

  80.     NSDictionary *dic = friends[1];

  81.     NSLog(@"%@",dic);

  82. 其他更多方法

  83. SMutableDictionary是NSDictionary的子类,所以继承了NSDictionary的方法, 以上的代码对NSMutableDictionary来说完全可用。我们试试不一样的地方

  84. 增删键值数据。

  85. [dictionary setObject: forKey:] :向可变的词典动态的添加数据 。

  86. [dictionary removeAllObjects..] : 删除掉词典中的所有数据。

  87. [dictionary removeObjectForKey..] :删除掉词典中指定key的数据。
复制代码


评分

参与人数 1技术分 +1 收起 理由
星河鹭起 + 1

查看全部评分

1 个回复

倒序浏览
值得学习ing!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马