字典里面存储都是键值对, 通过唯一的key(键)可以找到相应地value(值)。 类似Java的Map。
1、字典的初始化(只介绍静态方法(类方法))
(1)+ (instancetype)dictionary
功能:创建并返回一个空字典
由于NSDictionary是不可变字典,一旦初始化创建之后,不允许我们对其进行修改,所以我们一般不使用这个方法创建一个
不可变的空字典。
事实上,这个方法主要是声明给NSDictionary的子类NSMutableDictionary(可变字典)使用的。
(2)+ (instancetype)dictionaryWithObject:(id)anObject forKey:(id<NSCopying>)aKey
功能:创建并返回一个字典,这个字典只包含一对给定的键值
(id)anObject 表示这里只能放一个非空的OC对象(即不能放nil),不能放基本数据类型、结构体、枚举等。
(id<NSCopying>)aKey 表示这里是键值。
(3)+ (instancetype)dictionaryWithObjectsAndKeys:(id)firstObject, , ...nil
功能:创建一个包含多对键值的字典 并且nil只能放在最后,因为它具有特殊含义:表示键值输入完毕。
(4) + (instancetype)dictionaryWithObjects:(NSArray *)objects forKeys:(NSArray *)keys
功能:创建一个字典,它的键和值分别保存在两个数组中
(5)快速创建字典
@{} : 使用这种方法可以快速创建一个不可变字典NSDictionary; 但是不能用于创建可变字典NSMutableDictionary
2、字典的基本用法
(1) - (NSUInteger)count count是动态方法(对象方法)
功能:计算字典中的键值对数。
注意:count计算的是字典中的键值有多少对,而不是有多少个OC字符串对象。
(2)- (BOOL)isEqualToDictionary:(NSDictionary *)otherDictionary
功能:判断两个字典是否相同
(3)objectForKey:
功能:根据key值取对应的value值
(4)[dict writeToFile:<(NSString *)> atomically:<(BOOL)>];
功能: 将字典写入文件中
(5)+ dictionaryWithContentsOfFile:(NSString *)
功能:从文件读取字典(要求文件格式符合要求)
(6)[dict allKeys];
功能:返回所有的key
(7)[dict allValues];
功能:返回所有的value
注意:可以有多个key对应1个value;但是不能有1个key对应多个value。
(8)[dict objectsForKeys:<(NSArray *)> notFoundMarker:<(id)#>];
功能:根据多个key取出对应的多个value
当找不到key对应的value时,用Marker的参数值代替。
3、遍历字典
(1) 使用for循环
(2) 使用key迭代器遍历字典
(3)使用block遍历字典