12-NSDictionary(字典)

字典里面存储都是键值对, 通过唯一的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遍历字典

原文地址:https://www.cnblogs.com/xdl745464047/p/4006412.html