1.NSDictionary字典的创建

   1:  // key value
   2:      // key -==> value
   3:      NSDictionary *dict = [NSDictionary dictionaryWithObject:@"v" forKey:@"key"];
   4:      
   5:      NSArray *keys = [NSArray arrayWithObjects:@"k1", @"k2", nil];
   6:      NSArray *values = [NSArray arrayWithObjects:@"v1", @"v2", nil];
   7:      NSDictionary *dict1 = [NSDictionary dictionaryWithObjects:values
   8:                                                        forKeys:keys];
   9:      NSDictionary *dict2 = [NSDictionary dictionaryWithObjectsAndKeys:@"v", @"key",
  10:                             @"v1", @"key1",
  11:                             nil];
  12:      NSLog(@"%@", dict2);
  13:      
  14:      
  15:      //    BOOL isSuccess = [dict writeToFile:@"/Users/apple/Desktop/1.txt"
  16:      //           atomically:YES];
  17:      //    if (isSuccess) {
  18:      //        NSLog(@"成功");
  19:      //    }else{
  20:      //        NSLog(@"写入失败");
  21:      //    }
  22:      
  23:      NSDictionary *dict3 = [NSDictionary dictionaryWithContentsOfFile:@"/Users/apple/Desktop/1.txt"];
  24:      NSLog(@"%@", dict3);

字典的遍历

   1:   NSDictionary *pDict = [NSDictionary dictionaryWithObjectsAndKeys:@"abc", @"name",
   2:                             @"11", @"age",
   3:                             @"男", @"gender",
   4:                             nil];
   5:      //    NSArray *keys = [pDict allKeys];
   6:      //    for (int i = 0; i<[pDict count]; i++) {
   7:      //        NSString *key = [keys objectAtIndex:i];
   8:      //        NSString *value = [pDict objectForKey:key];
   9:      //        NSLog(@"%@: value= %@", key, value);
  10:      //    }
  11:      
  12:      //    for (id key in pDict) {
  13:      //        NSLog(@"%@", key);
  14:      //    }
  15:      //
  16:      
  17:      [pDict enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) {
  18:          NSLog(@"%@", key);
  19:          
  20:          // 修改stop指向内存的值
  21:          *stop = YES;
  22:      }];

2.可变字典

   1:   
   2:      NSMutableDictionary *dictM = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"v", @"key",
   3:                                    nil];
   4:      [dictM setObject:@"1" forKey:@"key"];
   5:      NSLog(@"%@", dictM);

3.具体使用的例子

   1:  // 名字
   2:      // 年龄
   3:      // 性别
   4:      NSDictionary *pDict = [NSDictionary dictionaryWithObjectsAndKeys:
   5:                             @"11", @"age",
   6:                             @"abc", @"name",
   7:                             @"男", @"gender",
   8:                             nil];
   9:      
  10:      
  11:      //    NSMutableArray *array = [NSMutableArray array];
  12:      //    [array addObject:pDict];
  13:      
  14:      id name = [pDict objectForKey:@"name"];
  15:      NSLog(@"%@", name);

4.各常用类对比

   1:  /*
   2:   集合
   3:   1.NSArray\NSMutableArray
   4:   * 有序
   5:   * 快速创建(不可变):@[obj1, obj2, obj3]
   6:   * 快速访问元素:数组名[i]
   7:  
   8:   2.NSSet\NSMutableSet
   9:   * 无序
  10:  
  11:   3.NSDictionary\NSMutableDictionary
  12:   * 无序
  13:   * 快速创建(不可变):@{key1 : value1,  key2 : value2}
  14:   * 快速访问元素:字典名[key]
  15:   */

例子

   1:   /*
   2:       字典:
   3:  
   4:       key ----> value
   5:       索引 ----> 文字内容
   6:  
   7:       里面存储的东西都是键值对
   8:  
   9:  
  10:       */
  11:      
  12:      // NSDictionary *dict = [NSDictionary dictionaryWithObject:@"jack" forKey:@"name"];
  13:      
  14:      
  15:      // NSArray *keys = @[@"name", @"address"];
  16:      // NSArray *objects = @[@"jack", @"北京"];
  17:      
  18:      // NSDictionary *dict = [NSDictionary dictionaryWithObjects:objects forKeys:keys];
  19:      
  20:      
  21:      /*
  22:       NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:
  23:       @"jack", @"name",
  24:       @"北京", @"address",
  25:       @"32423434", @"qq", nil];*/
  26:      
  27:      
  28:      NSDictionary *dict = @{@"name" : @"jack", @"address" : @"北京"};
  29:      
  30:      // id obj = [dict objectForKey:@"name"];
  31:      
  32:      id obj = dict[@"name"];
  33:      
  34:      NSLog(@"%@", obj);
  35:      
  36:      
  37:      
  38:      // 返回的是键值对的个数
  39:      NSLog(@"%ld", dict.count);

OC语言基础之NSDictionary的更多相关文章

  1. OC语言基础知识

    OC语言基础知识 一.面向对象 OC语言是面向对象的,c语言是面向过程的,面向对象和面向过程只是解决问题的两种思考方式,面向过程关注的是解决问题涉及的步骤,面向对象关注的是设计能够实现解决问题所需功能 ...

  2. 李洪强iOS开发之OC语言基础知识

    OC语言基础知识 一.面向对象 OC语言是面向对象的,c语言是面向过程的,面向对象和面向过程只是解决问题的两种思考方式,面向过程关注的是解决问题涉及的步骤,面向对象关注的是设计能够实现解决问题所需功能 ...

  3. 黑马程序员——OC语言基础语法 面向对象的思想

    Java培训.Android培训.iOS培训..Net培训.期待与您交流! (以下内容是对黑马苹果入学视频的个人知识点总结)(一)基础语法 1)关键字 @interface.@implementati ...

  4. OC语言基础之代码的封装

    1.封装的注意点 1: // 成员变量尽量不要用@public 2: // @public 3: int age; 1: //@public 2: // 只读(readonly):只允许外界访问我的n ...

  5. OC语言基础之NSArray

    0.数组的分类 NSArray :不可变数组 NSMutableArray : 可变数组 1: // @[] 只创建不可变数组NSArray 2: /* 错误写法 3: NSMutableArray ...

  6. OC语言基础之NSString

    1.字符串的创建 1: NSString *s1 = @"jack"; 2: 3: //NSString *s2 = [[NSString alloc] initWithStrin ...

  7. OC语言基础之利用property优化封装

    1.property功能用法 1: // @property:可以自动生成某个成员变量的setter和getter声明 2: @property int age;//可以直接免去变量的声明 3: // ...

  8. OC语言基础之函数与方法

    方法 1.对象方法都是以减号 - 2.对象方法的声明必须写在@interface和@end之间    对象方法的实现必须写在@implementation和@end之间 3.对象方法只能由对象来调用 ...

  9. OC语言基础之类的本质

    一.类的本质 1: // 类本身也是一个对象,是个Class类型的对象,简称类对象 2: 3: /* 4: 利用Class 创建 Person类对象 5: 6: 利用 Person类对象 创建 Per ...

随机推荐

  1. java获取mysql数据库表、字段、字段类型、字段注释

    最近想要写一个根据数据库表结构生成实体.mapper接口.mapping映射文件.service类的简单代码生成工具,所以查阅了一些资料,怎样获取数据库的表.表中字段.字段类型.字段注释等信息. 最后 ...

  2. [洛谷P3942] 将军令

    洛谷题目链接:将军令 题目背景 历史/落在/赢家/之手 至少/我们/拥有/传说 谁说/败者/无法/不朽 拳头/只能/让人/低头 念头/却能/让人/抬头 抬头/去看/去爱/去追 你心中的梦 题目描述 又 ...

  3. JAVA路线

    [转]Java自学之路——by马士兵 作者:马士兵老师 JAVA自学之路 一:学会选择 为了就业,不少同学参加各种各样的培训. 决心做软件的,大多数人选的是java,或是.net,也有一些选择了手机. ...

  4. 2017年上海金马五校程序设计竞赛:Problem B : Sailing (广搜)

    Description Handoku is sailing on a lake at the North Pole. The lake can be considered as a two-dime ...

  5. CentOS 7 主机加固手册-下

      CentOS 7 主机加固手册-上 CentOS 7 主机加固手册-中 CentOS 7 主机加固手册-下 0x1f 删除禁用非必要的服务 删除非必要的服务 # Remove yum remove ...

  6. RabbitMQ消息队列(四): 消息路由

    1. 路由: 前面的示例中,我们或得到的消息为广播消息,但是无法更精确的获取消息的子集,比如:日志消息,worker1只需要error级别的日志, 而worker2需要info,warning,err ...

  7. TCP的可靠性

    原因: 1.确认和重传机制 2.序列号 3.流量控制(窗口) 4.拥塞控制(慢启动,拥塞避免,快速重传,快速恢复) http://blog.csdn.net/baidu_35692628/articl ...

  8. golang中的反射

    反射操作普通变量 package main import ( "fmt" "reflect" ) func main(){ a := 1 //reflect.T ...

  9. k8s资源应用的自由伸缩Scale(up/down)

    伸缩(Scale Up/Down)是指在线增加或减少 Pod 的副本数. 1.增加副本 Deployment   nginx-deployment初始是两个副本. [root@k8s-master k ...

  10. Zookeeper概念学习系列之zookeeper实现分布式进程监控

    不多说,直接上干货! 假设要监控多台服务器上的A程序运行状态, 当发现有服务器上的A程序下线的时候, 给管理员发短信, 并且尝试重启A程序. zookeeper实现分布式进程监控主要利用zk的临时节点 ...