1. /*=============================NSDictionary(不可变字典)的使用=========================*/
  2.  
  3. //————————————————————————————————字典的创建————————————————————————————————
  4.  
  5. // 前面的是值(value),后面的是键(key),一一对应
  6. // 方式一:
  7. NSDictionary *dic = [[NSDictionary alloc] initWithObjectsAndKeys:@"value",@"key",@"value1",@"key1", nil];
  8. NSLog(@"dic :%@",dic);
  9.  
  10. // 方式二:
  11. NSDictionary *dic1 = [NSDictionary dictionaryWithObjectsAndKeys:@"value",@"key",@"value1",@"key1", nil];
  12.  
  13. // 字典的value可以说任何对象类型
  14. NSArray *array = @[@"",@"",@""];
  15. NSDictionary *dic2 = [[NSDictionary alloc] initWithObjectsAndKeys:array,@"key" ,nil];
  16. NSLog(@"dic2 :%@",dic2);
  17.  
  18. NSDictionary *dic3 = [[NSDictionary alloc] initWithObjectsAndKeys:dic2,@"dicKey", nil];
  19. NSLog(@"dic3 :%@",dic3);
  20.  
  21. // 方式三:跟方式一区分,只能是不可变字典
  22. NSDictionary *dic4 = @{@"key":@"vlaue",@"key1":@"value1"};
  23. NSLog(@"dic4 :%@",dic4);
  24.  
  25. //————————————————————————————————字典的常用方法—————————————————————————————
  26.  
  27. // count 字典元素的个数,键值一起为一个元素
  28. NSUInteger len = [dic4 count];
  29. NSLog(@"len = %ld",len);
  30.  
  31. //objectForKey :根据key取对应的值,如果可以没有不会报错,返回的是null
  32. id obj = [dic3 objectForKey:@"dicKey"];
  33. NSLog(@"obj:%@",obj);
  34.  
  35. //allKeys 获取字典的所有key,返回的是数组
  36. NSArray *allKeys = [dic4 allKeys];
  37. NSLog(@"allKeys :%@",allKeys);
  38.  
  39. //allValues 获取字典的所有Value,返回的是数组
  40. NSArray *allValues = [dic4 allValues];
  41. NSLog(@"allValues: %@",allValues);
  42.  
  43. //allKeysForObject 获取相同value的所有key
  44. NSDictionary *dic5 = @{@"key":@"value",@"key1":@"value"};
  45. NSArray *allKey = [dic5 allKeysForObject:@"value"];
  46. NSLog(@"allKey :%@",allKey);
  47.  
  48. /*=============================NSMutableDictionary(可变字典)的使用=========================*/
  49.  
  50. //————————————————————————————————可变字典的创建————————————————————————————————
  51.  
  52. // 两种方式:
  53. NSMutableDictionary *mDic = [[NSMutableDictionary alloc] initWithObjectsAndKeys:@"abc",@"key",@"hhhh",@"key1", nil];
  54.  
  55. NSMutableDictionary *mDic1 = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"value",@"key",@"value1",@"key1", nil];
  56.  
  57. //NSMutableDictionary *mDic2 = @{@"key":@"value",@"key1":@"value1"}; 错误:不能这样创建可变字典
  58. NSLog(@"mDic1:%@",mDic1);
  59.  
  60. //————————————————————————————————可变字典的常用方法—————————————————————————————
  61.  
  62. //setObject:forKey 给字典添加元素,修改元素
  63. [mDic1 setObject:@"value2" forKey:@"key2"];
  64. NSLog(@"mDic1:%@",mDic1);
  65. // 修改key 对应的元素
  66. [mDic1 setObject:@"kkkkk" forKey:@"key2"];
  67.  
  68. //removeObjectForKey 移除指定键的元素
  69. [mDic1 removeObjectForKey:@"key"];
  70. NSLog(@"mDic1:%@",mDic1);
  71.  
  72. // removeAllObjects 移除字典所有的元素
  73. [mDic1 removeAllObjects];
  74. NSLog(@"mDic1:%@",mDic1);
  75.  
  76. // removeObjectsForKeys 移除一组键对应的元素
  77. NSArray *keys = [mDic1 allKeys];
  78. [mDic1 removeObjectsForKeys:keys];
  79. NSLog(@"mDic1:%@",mDic1);
  80.  
  81. //setDictionary 将新字典替换旧字典
  82. [mDic1 setDictionary:mDic];
  83. NSLog(@"mDic1 :%@",mDic);
  84.  
  85. /*===========================================字典的遍历===================================*/
  86.  
  87. NSMutableDictionary *mDic3 = [[NSMutableDictionary alloc] initWithObjectsAndKeys:@"abc",@"key",@"etrtr",@"key1", nil];
  88.  
  89. // 1、普通遍历
  90. NSArray *allkey = [mDic3 allKeys];
  91. for (int i = ; i < mDic3.count; i++) {
  92.  
  93. NSString *key = [allkey objectAtIndex:i];
  94. NSString *value = [mDic3 objectForKey:key];
  95. NSLog(@"---%@",value);
  96. }
  97.  
  98. // 2、快速遍历 obj 是字典的key
  99. for (id obj in mDic3) {
  100.  
  101. NSString *value = [mDic3 objectForKey:obj];
  102. NSLog(@"==%@",value);
  103. }
  104.  
  105. // 3、block 遍历
  106. [mDic3 enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) {
  107.  
  108. NSLog(@">>%@",key);
  109. NSLog(@">>%@",obj);
  110. }];

本文GitHub地址https://github.com/zhangkiwi/iOS_SN_NSDictionary

iOS-OC-基础-NSDictionary常用方法的更多相关文章

  1. iOS 阶段学习第11天笔记(OC基础知识)

    iOS学习(OC语言)知识点整理 一.OC基础知识 1)#import  用于导入头文件,预处理阶段加载引用,只加载一次. 2)OC 依赖于Foundation框架下的头文件Foundation.h, ...

  2. iOS开发OC基础:Xcode中常见英文总结,OC常见英文错误

    在开发的过程中难免会遇到很多的错误,可是当看到系统给出的英文时,又不知道是什么意思.所以这篇文章总结了Xcode中常见的一些英文单词及词组,可以帮助初学的人快速了解给出的提示.多练习,就肯定能基本掌握 ...

  3. oc总结 --oc基础语法相关知识

    m是OC源文件扩展名,入口点也是main函数,第一个OC程序: #import <Foundation/Foundation.h> int main(int argc, const cha ...

  4. OC总结 【OC基础语法相关知识】

    m是OC源文件扩展名,入口点也是main函数,第一个OC程序: #import <Foundation/Foundation.h> int main(int argc, const cha ...

  5. OC基础笔记目录

    OC基础(1) Objective-C简介 OC和C对比 第一个OC程序 面向对象思想 OC基础(2) 类与对象 类的设计 第一个OC类 对象方法的声明和实现 类方法的声明和实现 OC基础(3) 对象 ...

  6. ios+oc面试题

    ios+oc面试题     浅复制和深复制的区别?//浅拷贝和深拷贝答案:浅层复制(copy):只复制指向对象的指针,而不复制引用对象本身.//通过对象的指针来访问这个对象深层复制(mutableCo ...

  7. OC基础16:复制对象

    "OC基础"这个分类的文章是我在自学Stephen G.Kochan的<Objective-C程序设计第6版>过程中的笔记. 1.浅复制即是指针赋值,复制对象的修改会影 ...

  8. OC基础--数据类型与表达式

    前言 做iOS开发有3年了,从当初的小白到现在,断断续续看过很多资料,之前也写过一些博文来记录,但是感觉知识点都比较凌乱.所以最近准备抽时间把iOS开发的相关知识进行一个梳理,主要分为OC基础.UI控 ...

  9. IOS开发基础知识碎片-导航

    1:IOS开发基础知识--碎片1 a:NSString与NSInteger的互换 b:Objective-c中集合里面不能存放基础类型,比如int string float等,只能把它们转化成对象才可 ...

  10. iOS 面试基础题目

    转载: iOS 面试基础题目 题目来自博客:面试百度的记录,有些问题我能回答一下,不能回答的或有更好的回答我放个相关链接供参考. 1面 Objective C runtime library:Obje ...

随机推荐

  1. hdu 验证角谷猜想 1279

    Problem Description 数论中有许多猜想尚未解决,其中有一个被称为"角谷猜想"的问题,该问题在五.六十年代的美国多个著名高校中曾风行一时,这个问题是这样描述的:任何 ...

  2. 在msvc中使用Boost.Spirit.X3

    Preface “Examples of designs that meet most of the criteria for "goodness" (easy to unders ...

  3. Mvc htmlhelper that generates a menu from a controller

    Simple menu system that grabs a list of actions from a single controller and creates an unordered li ...

  4. 判断div是否隐藏

    <script type="text/javascript" src="../js/jquery-1.7.2.min.js"></script ...

  5. IOS 面试 --- 动画 block

    1 谈谈对Block 的理解?并写出一个使用Block执行UIVew动画? 答案:Block是可以获取其他函数局部变量的匿名函数,其不但方便开发,并且可以大幅提高应用的执行效率(多核心CPU可直接处理 ...

  6. Swift UI

    概述 Apple近日发布了Swift编程语言,Swift是供iOS和OS X应用编程的新编程语言.相信很多开发者都在学习这门新语言.   废话不多说,下面我就来学习使用Swift创建一个简单的UI应用 ...

  7. LDD命令--可执行文件依赖的库出现错误时

    http://littlepig3056.blog.163.com/blog/static/180758353201212751814134/ ldd  查看可执行文件依赖的库,结果会列出依赖的库名及 ...

  8. [原创]零基础R语言教程---第二课---R语言入门

    这节教程简单描述了R语言中常用的数据类型, 向量,字符串,矩阵,列表,数据框,以及附带了一个小例子 对于这节课所附带的例子需要做下列补充: 1.这个例子面向于对整列的数据进行预测 2.如果你需要求单行 ...

  9. stm32通用定时器中断问题

    在使用stm32的通用定时器定时中断的时候,发现定时器在完成初始化配置后,定时器UIF位会立刻置位,导致在使能中断后,程序会立刻进入定时器中断. 如果设计代码时不希望定时器配置完成后,立刻进入中断,可 ...

  10. php跨服务器传递对象

    最近因为研究跨域名,跨服务器的问题,所以无聊,就想到了一个跨服务器传递对象的问题. 想要跨服务器传递数据,那么就要使用到get或者post提交. 我这里的方法有点复杂,但是因为平时工作时,有封装相应的 ...