/*

 集合

 1.NSArray\NSMutableArray

•有序

•快速创建(不可变):@[obj1, obj2, obj3]

•快速访问元素:数组名[i]

  2.NSSet\NSMutableSet

•无序

 3.NSDictionary\NSMutableDictionary

•无序

•快速创建(不可变):@{key1 : value1,  key2 : value2}

•快速访问元素:字典名[key]

*/

NSDictionary:字典

代码示例

1>

void create()
{
/*字典:key ----> value索引 ----> 文字内容里面存储的东西都是键值对
*/// 字典创建方式// NSDictionary *dict = [NSDictionary dictionaryWithObject:@"jack" forKey:@"name"];// NSArray *keys = @[@"name", @"address"];// NSArray *objects = @[@"jack", @"北京"];// NSDictionary *dict = [NSDictionary dictionaryWithObjects:objects forKeys:keys];/*NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:@"jack", @"name",@"北京", @"address",@"32423434", @"qq", nil];
*/// 最实用的方法NSDictionary *dict = @{@"name" : @"jack", @"address" : @"北京"};// id obj = [dict objectForKey:@"name"];// 获取值id obj = dict[@"name"];NSLog(@"%@", obj);// 返回的是键值对的个数NSLog(@"%ld", dict.count);
}

2> 基本使用

void use1()
{NSMutableDictionary *dict = [NSMutableDictionary dictionary];// 添加键值对[dict setObject:@"jack" forKey:@"name"];[dict setObject:@"北京" forKey:@"address"];[dict setObject:@"rose" forKey:@"name"];// 移除键值对// [dict removeObjectForKey:<#(id)#>];
       NSString *str = dict[@"name"];//NSLog(@"%@", str);
    NSLog(@"%@", dict);//NSLog(@"%@", @[@"jack", @"rose"]);
}void use2()
{NSMutableDictionary *dict = @{@"name" : @"jack"};[dict setObject:@"rose" forKey:@"name"];
}void use3()
{// 字典不允许有相同的key,但允许有相同的value(Object)// 字典的无序的NSDictionary *dict = @{@"address" : @"北京",@"name" : @"jack",@"name2" : @"jack",@"name3" : @"jack",@"qq" : @"7657567765"};//    NSArray *keys = [dict allKeys];////    for (int i = 0; i<dict.count; i++)//    {//        NSString *key = keys[i];//        NSString *object = dict[key];//////        NSLog(@"%@ = %@", key, object);//    }// 使用Block来访问
    [dict enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) {NSLog(@"%@ - %@", key, obj);// *stop = YES;
     }];
}

#import <Foundation/Foundation.h>int main()
{NSArray *persons = @[@{@"name" : @"jack", @"qq" : @"432423423", @"books": @[@"5分钟突破iOS编程", @"5分钟突破android编程"]},@{@"name" : @"rose", @"qq" : @"767567"},@{@"name" : @"jim", @"qq" : @"423423"},@{@"name" : @"jake", @"qq" : @"123123213"}];// NSDictionary *jim = persons[2];
    NSString *bookName = persons[0][@"books"][1];NSLog(@"%@", bookName);//NSArray *array = persons[0][@"books"];//NSLog(@"%@", array);// 先取出1位置对应的字典// 再取出字典中qq这个key对应的数据//NSLog(@"%@", persons[1][@"qq"]);// NSLog(@"%@", jim);return 0;
}

代码是以前学习时照着李明杰老师的视频敲的,再次,向他表示感谢;李老师说的很好,推荐大家去看,他交的不是编程,而是一种思想,让我受益匪浅。

转载于:https://www.cnblogs.com/iOSteemo/p/4301920.html

iOS开发之oc(二十)--Foundation(5)NSDictionary相关推荐

  1. ios开发之OC基础-类和对象

    ios开发之OC基础-类和对象 本系列的文章主要来自于个人在学习前锋教育-欧阳坚老师的iOS开发教程之OC语言教学视频所做的笔记,边看视频,边记录课程知识点.建议大家先过一遍视频,在看视频的过程中记录 ...

  2. ios c语言调用oc方法,ios开发之OC基础-类和对象(示例代码)

    本系列的文章主要来自于个人在学习前锋教育-欧阳坚老师的iOS开发教程之OC语言教学视频所做的笔记,边看视频,边记录课程知识点.建议大家先过一遍视频,在看视频的过程中记录知识点关键字,把把握重点,然后再 ...

  3. iOS开发之OC入门(类的使用)

    占位符 %p打印指针的值 %@打印指针对应的值,输出的格式:<对象所属的类名:对象的地址> NSLog%@方法调用传入对象的description的方法,拿到该方法的返回值,这个返回值是一 ...

  4. (0085)iOS开发之OC与JS交互高级用法(JavaScriptCore)

    前述:JavaScriptCore你不知道的OC与JS之间交互.OC与JS之间用model实现交互.通讯.传值!好玩! 几乎三年来一直断断续续接触OC与JS交互,每次觉得UIWebView OC与JS ...

  5. iOS开发之OC入门(类的基础知识)

    内存中的五大区域 栈:存储局部变量,局部变量作用域执行完会被立即回收 堆:程序员手动申请的字节空间 malloc calloc realloc BSS段:存储未被初始化的全局变量和静态变量,初始化后回 ...

  6. 李洪强iOS开发之OC[012] -类的声明实现小结

    // //  main.m //  11 - 内容总结 // //  Created by vic fan on 16/7/9. //  Copyright © 2016年 李洪强. All righ ...

  7. iOS开发之oc(五)--成员变量(实例变量)

    (一)1.书写位置 成员变量也叫实例变量,是写在 @interface   { // 写在这里的,比如 int _age; } @end 成员变量的命名规范  成员变量都以下划线 _ 开头,好处: 1 ...

  8. iOS开发之Quartz2D 二:绘制直线,曲线,圆弧,矩形,椭圆,圆

    #import "DrawView.h"@implementation DrawView/*** 作用:专门用来绘图* 什么时候调用:当View显示的时候调用* @param re ...

  9. IOS开发之MD5加密和钥匙串的使用-oc

    IOS开发之MD5加密和钥匙串的使用-oc 源码在我的主页,md5加密是用户登录安全的一个保障.不可逆的,可以暴力破解的. // // ViewController.m // MD5演练 // // ...

最新文章

  1. python做表格计算公式_Python自学Day45 制作Excel报表
  2. python实现图形旋转_python轻松实现图片旋转
  3. 手动安装huson插件的做法
  4. 汇编 debug调试没有执行对应文件源码指令---》失灵---》正确使用debug第一步
  5. Sublime Text for Mac 最新版安装后,无法搜索到Install Package的解决办法
  6. mysql中ibdata1过大的问题
  7. springMVC使用注解方式进行页面跳转
  8. Ehcache小结(一)
  9. svg mysql_SVG介绍
  10. linux 下strstr函数,Linux中strchr与strstr函数实现。
  11. X1Tablet键盘改造成USB键盘
  12. 显示器序列号查询方式
  13. oracle reco进程停止,oracle的后台进程能否杀掉
  14. 饭店计算机信息管理全章ppt,酒店信息质量管理.ppt
  15. Xmanager 5 (Windows 远程Centos工具 )
  16. 魅族手机安装Google Play
  17. 不管是否情愿,5G要来了,运营商该做的事一样也不能少
  18. Edraw Max(亿图图示)新手福音:教你思维导图的简单画法! 1
  19. NOTA-PEG-Lys/CS/HRP/MMPs大环配体-聚乙二醇-溶菌酶/硫酸软骨素/辣根过氧化氢酶/基质金属蛋白酶
  20. 在Matlab中提取彩图黄色分量

热门文章

  1. SpringBoot - 使用ExecutorService线程池执行异步任务教程(以Runnable任务为例)
  2. log4j的日志级别
  3. python 字典和列表的遍历
  4. 某公司防火墙配置-2
  5. 解决ASP.NET在IE10中Session丢失问题
  6. 大数据技术存在局限 经验直觉不可或缺
  7. codevs 2837 考前复习——01背包
  8. OSChina 周一乱弹 —— 程序员的浪漫你不懂
  9. hdu 1281 棋盘游戏 (二分匹配)
  10. 视频压缩知识介绍(一)——评价标准及算法原理