NSDictionary和NSMutableDictionary

  • NSDictionary:不可变字典(父类)
  • NSMutableDictionary:可变字典(子类)
  • 字典的key值和value值都必须是对象

NSDictionary

一、字典的创建:

// 字典的创建
// 创建一个空的字典
NSDictionary *dic = [NSDictionary dictionary];
// 创建一个字典,里面只包含一对键值对
NSDictionary *dic2 = [NSDictionary dictionaryWithObject:@"jack" forKey:@"name"];
// 创建一个字典,里面包含多对键值对
NSDictionary *dic3 = [NSDictionary dictionaryWithObjectsAndKeys:@"rose", @"name", @"18", @"name", nil];
NSDictionary *dic4 = [[NSDictionary alloc] initWithObjectsAndKeys:@"rose", @"name", @"18", @"name", nil];
NSArray *keys = @[@"name", @"age"];
NSArray *values = @[@"rose", @"18"];
NSDictionary *dic5 = [NSDictionary dictionaryWithObjects:values forKeys:keys];
NSDictionary *dic6 = [[NSDictionary alloc] initWithObjects:values forKeys:keys];
// 快速创建字典
NSDictionary *dic7 = @{@"name":@"rose", @"age":@"18"};

二、字典的访问:

三、字典的读写:
(1) 字典的读写方式一:

(2) 字典的读写方式二:
URL:资源路径
URL的格式: 协议头//路径
file:// 本地
http:// 互联网传输协议
https:// 加密的互联网数据传输
ftp:// 点对点的文件传输

- 上述方法的几个注意事项:
1.

NSURL *url = [NSURL URLWithString:
@”file:///Users/otman/Desktop/dic.plist”]; 

file:// 代表本地路径,第三个/是根路径
通过这种方法创建的url,如果路径中有中文则无法正常使用
2.

NSURL *url2 = [NSURL fileURLWithPath:
@”/Users/otman/Desktop/dic.plist”]; 

如果是本地资源路径,可以使用 fileURLWithPath: 文件路径 来创建url

四、字典的常用方法:
(1)查看字典中键值对的个数

五、字典的遍历
(1)方式一:

(2)方式二:(快速枚举法)

- 使用注意:通过快速枚举法遍历字典,会将字典中的key值依次赋值给obj,每赋值一次,执行一次循环体
(3)方式三:

- 使用注意:
1. 每遍历到一对键值对,就会调用一次block
2. 并且将当前键值对的key和value当做参数传递给block的key和obj
3. 为什么是BOOL *stop?
如果没有*,只是纯粹的值传递,只有block接收一个地址,才可以根据地址修改外面的值
4. *stop 为 YES停止遍历; *stop为NO继续遍历

NSMutableDictionary

  • NSMutableDictionary为NSDictionary的子类,所以NSDictionary拥有的方法NSMutableDictionary也都拥有

一、增

- 使用注意:
1. 在往字典中添加键值对的时候应当注意,如果给同一个key赋值,当前值会覆盖之前key对应的value值
2. 字典中得键值对是没有顺序的,先添加和后添加没有什么顺序之分

二、删

三、改

- 使用注意:
1. 这是根据给字典中同一个key复制,当前值会覆盖之前key对应的value值的特点来进行修改的
2. 还有一种简单的方法来修改字典对某个key对应的值

四、查

NSDictionary和NSMutableDictionary的使用注意

一、NSDictionary和NSMutableDictionary的使用注意:
1. @{ }这种方式创建的是一个不可变字典
2. 字典的key值可value值都必须是对象
3. 字典对象直接使用NSLog()作为输出的时候,是大括号{}括起来的形式
4. 在字典中,key值不能相同
<1> 创建字典的时候,key值有重复

- 注意:在字典创建的时候,key值不能相同,如果key值重复了,最后添加的键值对将不能够保存到字典中

<2> 在添加键值对的时候,key值有重复

- 注意:在给同一个key赋值的时候,当前值会覆盖之前key对应的value值

NSArray和NSDictionary的对比

一、NSArray和NSDictionary的简单对比:
1. NSArray是有序的,NSDictionary是没有顺序的
2. NSArray是通过元素下标访问元素,NSDictionary是通过key访问对应的value
3. NSArray的用法:
<1> 创建:
NSArray *arr = @[@”rose”, @”jack”];
@[ ]这种方式创建的是一个不可变数组
<2> 访问:
id d = arr[0];
4. NSDictionary的用法:
<1> 创建:
NSDictionary *dic = @{@“name”:@“rose”, @“age”:@“18”};
@{ }这种方式创建的是一个不可变字典
<2> 访问:
id d = dic[@”name”];


—— 如果您有不同的见解,请随时指出,期待与您的交流!——


OutMan——Foundation框架中的集合类(三)相关推荐

  1. Foundation框架中常用类的介绍

    http://blog.csdn.net/mengtnt/article/details/6087536 Foundation框架的架构 cocoa程序编写主要用到2个框架Foundation和App ...

  2. (转载)OC学习篇之---Foundation框架中的NSDirctionary类以及NSMutableDirctionary类

    昨天学习了Foundation框架中NSArray类和NSMutableArray类,今天来看一下Foundation框架中的NSDirctionary类,NSMutableDirctionary类, ...

  3. oc基础-foundation框架中的常用结构体

    1.CGPoint/NSPoint :表示坐标点的 创建: CGPoint *cp=NSMakePoint(10,10); //x,y NSPonit *cp=CGPointMake(10,10); ...

  4. Foundation框架中的数字类型:NSNmuber(二)

    看官们,我们在上一章回中对NSNumber类型做了详细的分析,本章回中我们将给出完整的代码,请大家参考: #import<Foundation/Foundation.h>int main( ...

  5. 黑马程序员——零基础学习iOS开发——13 Foundation框架

    ------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS ...

  6. OC Foundation框架—字符串

    一.Foundation框架中一些常用的类 字符串型: NSString:不可变字符串 NSMutableString:可变字符串 集合型: 1) NSArray:OC不可变数组 NSMutableA ...

  7. 李洪强iOS开发之Foundation框架—结构体

    Foundation框架-结构体 一.基本知识 Foundation-基础框架.框架中包含了很多开发中常用的数据类型,如结构体,枚举,类等,是其他ios框架的基础. 如果要想使用foundation框 ...

  8. 黑马程序员--Foundation框架之--NSArray类以及它的子类NSMutableArray类

    ------IOS培训期待与您交流! ------- 今天我们继续来看一下Foundation框架中的NSArray类和 NSMutableArray类,NSArray类 是不可变的,NSMutabl ...

  9. 黑马程序员--Foundation框架之--NSObject类

    ------IOS培训期待与您交流! ------- OC中的Foundation框架是系统提供的,他就相当于是系统的一套api,其内部有很多现有的类和功能提供给我们使用. 那么今天首先来介绍一下Fo ...

  10. Core Foundation框架

    转载自:http://blog.csdn.net/weiwangchao_/article/details/7744972 Core Foundation框架 (CoreFoundation.fram ...

最新文章

  1. 彻底理解android中的内部存储与外部存储
  2. (转)科学是怎样产生的
  3. 蚂蚁组件 axure 蚂蚁_蚂蚁属性细微差别
  4. c++面向对象高级编程 学习一 不带指针的类
  5. Visual C++ 2008入门经典 第十章标准模板库(二)
  6. 数据结构之线性表学习一
  7. 图文详解互联网根基之HTTP
  8. 基于Pytorch版yolov5的滑块验证码破解思路
  9. NotifyIcon用法
  10. 基于php034医院电子病历住院病人
  11. pentaho的使用与感受
  12. 因为星期三有计算机课的英语,34  (五年级上册)第二单元 我星期里的每天--英汉对...
  13. javashop技术培训总结,架构介绍,Eop核心机制
  14. 智能家居Zigbee和蓝牙哪个发展潜力更大?
  15. vue框架如何将SPA项目改为SSR项目
  16. 基于 HTML5 WebGL 的高炉炼铁厂可视化系统
  17. 2019智能手表推荐_2019智能手表推荐排行榜前三名top!
  18. 1.操作系统——内核
  19. Laravel 的生命周期
  20. 海关数据对外贸企业的重要性

热门文章

  1. 江苏省职称计算机word2003教材,[205]Word 2003中文字处理 考试大纲
  2. PID系统稳定性与零极点的关系
  3. 互联网早报:微信内测深度清理功能内存,可一键清理缓存
  4. 体育用品商城小程序开发功能
  5. 三毛3--亲爱的婆婆大人
  6. 量化投资学习——股指期货研究(三)
  7. php网络图片拼接,图片处理-PHP图片拼接如何高效的实现
  8. Makefile与前缀后缀相关函数suffix、basename、addsuffix、addprefix
  9. Oracle内置函数-字符/数值/日期/转换/NVL/分析函数与窗口函数/case_decode
  10. 少有人走的路--心智成熟的旅程