/*=============================NSDictionary(不可变字典)的使用=========================*/

     //————————————————————————————————字典的创建————————————————————————————————

     // 前面的是值(value),后面的是键(key),一一对应
// 方式一:
NSDictionary *dic = [[NSDictionary alloc] initWithObjectsAndKeys:@"value",@"key",@"value1",@"key1", nil];
NSLog(@"dic :%@",dic); // 方式二:
NSDictionary *dic1 = [NSDictionary dictionaryWithObjectsAndKeys:@"value",@"key",@"value1",@"key1", nil]; // 字典的value可以说任何对象类型
NSArray *array = @[@"",@"",@""];
NSDictionary *dic2 = [[NSDictionary alloc] initWithObjectsAndKeys:array,@"key" ,nil];
NSLog(@"dic2 :%@",dic2); NSDictionary *dic3 = [[NSDictionary alloc] initWithObjectsAndKeys:dic2,@"dicKey", nil];
NSLog(@"dic3 :%@",dic3); // 方式三:跟方式一区分,只能是不可变字典
NSDictionary *dic4 = @{@"key":@"vlaue",@"key1":@"value1"};
NSLog(@"dic4 :%@",dic4); //————————————————————————————————字典的常用方法————————————————————————————— // count 字典元素的个数,键值一起为一个元素
NSUInteger len = [dic4 count];
NSLog(@"len = %ld",len); //objectForKey :根据key取对应的值,如果可以没有不会报错,返回的是null
id obj = [dic3 objectForKey:@"dicKey"];
NSLog(@"obj:%@",obj); //allKeys 获取字典的所有key,返回的是数组
NSArray *allKeys = [dic4 allKeys];
NSLog(@"allKeys :%@",allKeys); //allValues 获取字典的所有Value,返回的是数组
NSArray *allValues = [dic4 allValues];
NSLog(@"allValues: %@",allValues); //allKeysForObject 获取相同value的所有key
NSDictionary *dic5 = @{@"key":@"value",@"key1":@"value"};
NSArray *allKey = [dic5 allKeysForObject:@"value"];
NSLog(@"allKey :%@",allKey); /*=============================NSMutableDictionary(可变字典)的使用=========================*/ //————————————————————————————————可变字典的创建———————————————————————————————— // 两种方式:
NSMutableDictionary *mDic = [[NSMutableDictionary alloc] initWithObjectsAndKeys:@"abc",@"key",@"hhhh",@"key1", nil]; NSMutableDictionary *mDic1 = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"value",@"key",@"value1",@"key1", nil]; //NSMutableDictionary *mDic2 = @{@"key":@"value",@"key1":@"value1"}; 错误:不能这样创建可变字典
NSLog(@"mDic1:%@",mDic1); //————————————————————————————————可变字典的常用方法————————————————————————————— //setObject:forKey 给字典添加元素,修改元素
[mDic1 setObject:@"value2" forKey:@"key2"];
NSLog(@"mDic1:%@",mDic1);
// 修改key 对应的元素
[mDic1 setObject:@"kkkkk" forKey:@"key2"]; //removeObjectForKey 移除指定键的元素
[mDic1 removeObjectForKey:@"key"];
NSLog(@"mDic1:%@",mDic1); // removeAllObjects 移除字典所有的元素
[mDic1 removeAllObjects];
NSLog(@"mDic1:%@",mDic1); // removeObjectsForKeys 移除一组键对应的元素
NSArray *keys = [mDic1 allKeys];
[mDic1 removeObjectsForKeys:keys];
NSLog(@"mDic1:%@",mDic1); //setDictionary 将新字典替换旧字典
[mDic1 setDictionary:mDic];
NSLog(@"mDic1 :%@",mDic); /*===========================================字典的遍历===================================*/ NSMutableDictionary *mDic3 = [[NSMutableDictionary alloc] initWithObjectsAndKeys:@"abc",@"key",@"etrtr",@"key1", nil]; // 1、普通遍历
NSArray *allkey = [mDic3 allKeys];
for (int i = ; i < mDic3.count; i++) { NSString *key = [allkey objectAtIndex:i];
NSString *value = [mDic3 objectForKey:key];
NSLog(@"---%@",value);
} // 2、快速遍历 obj 是字典的key
for (id obj in mDic3) { NSString *value = [mDic3 objectForKey:obj];
NSLog(@"==%@",value);
} // 3、block 遍历
[mDic3 enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) { NSLog(@">>%@",key);
NSLog(@">>%@",obj);
}];

本文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 畅通工程续

    算法:多源最短路(floyd) 题意:有多个城镇,有些之间有通路,给你起点和终点,输出最短路径: Problem Description 某省自从实行了很多年的畅通工程计划后,终于修建了很多路.不过路 ...

  2. Linux-统一事件源

    概念: 信号时一种异步事件:信号处理函数和程序的主循环式两条不同的执行路线,信号处理函数需要尽可能快地执行完毕,以确保该信号不被屏蔽.(为了避免一些竞态条件,信号在处理期间,系统不会再次出发它)太久. ...

  3. python安装——Windows平台

    刚刚申请博客,第一次写随笔,记录下自己最近的学习情况,希望自己能够不断的学习,不断的丰富自己~ 最近刚开始学python,记录一下,希望大家相互学习,批评指正~ 1.下载python:https:// ...

  4. 字典:当索引不好用时2 - 零基础入门学习Python026

    字典:当索引不好用时2 让编程改变世界 Change the world by program 上节课我们学习到在一些情况下,比序列更实用的映射类型:字典.我们知道字典也有个关键符号就是大括号(也叫花 ...

  5. 黑马程序员——读取Plist文件

    -iOS培训,iOS学习-------型技术博客.期待与您交流!------------ 读取Plist文件     一:新建一个plist文件,并将plist文件数据填入plist文件中,这里pli ...

  6. data mining,machine learning,AI,data science,data science,business analytics

    数据挖掘(data mining),机器学习(machine learning),和人工智能(AI)的区别是什么? 数据科学(data science)和商业分析(business analytics ...

  7. python小程序之并发连接

    import threading import socket import time def conn(): cli = socket.socket() cli.connect(("58.6 ...

  8. UIViewController的生命周期及iOS程序执行顺序

    UIViewController的生命周期及iOS程序执行顺序     当一个视图控制器被创建,并在屏幕上显示的时候. 代码的执行顺序1. alloc                         ...

  9. 《Programming WPF》翻译 第5章 8.我们进行到哪里了?

    原文:<Programming WPF>翻译 第5章 8.我们进行到哪里了? 样式支持你定义一个策略来设置可视化元素的依赖属性.属性的设置可以被命名以及手动或者编程方式地通过名称应用,或者 ...

  10. 5.1.1 读取Redis 数据

    Redis 服务器是Logstash 推荐的Broker选择,Broker 角色就意味会同时存在输入和输出两个插件. 5.1.1 读取Redis 数据 LogStash::Input::Redis 支 ...