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”];