一、NSDictionary与NSMutableDictionary 1.它们是数组,它们就是以键值对的形式存储数据的 往这个数组中存储数据的同时,必须要指定这个数据的别名,才可以 要找到存储在这个数组中的数据,通过别名来找,而不是通过下标 NSDictionary与NSMutableDictionary有什么区别, 1)NSDictionary是父类,NSMutableDictionary是子类 2)NSDictionary里面的元素,是不是不可以修改啊,NSMutableDictionary里面的元素,可以动态的增加和删除 3.NSDictionary,我们叫做字典数组,因为Dictionary就是字典的意思嘛 1)存储数据的原理, a. 以键值对的形式存储数据 b. 字典数组一旦创建,其中的元素就无法动态的新增和删除 c. 键:只能是遵守了NSCoping协议的对象,而NSString就是遵守了这个协议的,所以NSString能不能当它的键,可以 值:只能是OC对象 2)怎么创建1个NSDictionary数组呢 NSDictionary是我们这个Foundation框架中的1个类, 所以,你要去创建这个类的对象的话,还是那三种方式,new,alloc init ,同名类方法 NSDictionary *dict1 = [NSDictionary new]; NSDictionary *dict2 = [[NSDictionary alloc] init]; NSDictionary *dict3 = [NSDictionary dictionary]; 这种方式创建出来的字典数组,里面没有元素,所以没有意义 3)一般创建方式 NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:(nonnull id),…,nil]; 你在后面依次写上值、键、值、键、就可以了 例如: NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:@“jack”,@“name”,@“广州市XX街道”,@“address”,nil]; 这就表示什么呢,是不是存了1对儿进去了吧 我们打出来看一下啊, NSLog(@“%@”,dict); 输出:address = “\U5317\U4eac\U5e02XX\U8857\U9053”; name = jack; 这个“\U5317\U4eac\U5e02XX\U8857\U9053”是什么意思,其实原因很简单,你这个是不是中文啊,它用的编码不一样,所以输出来不一样,这个其实就是我们“广州市XX街道”的编码 这个方法的签名如下: + (instancetype)dictionaryWithObjectsAndKeys:(id)firstObject,…; 这个方法做了什么事情呢, 将字典数组的值和键,挨个的写在后面,初始化就可以了, 4)简要创建方式 NSDictionary *dict = @{@“name”: @“rose”,@“age”: @“18”,@“address”: @“guangzhoushiXXstreet”}; @{键1:值1,键2:值2,键3:值3,键4:值4,键5:值6,…}; 这个其实是1个简写方式,这个@{@“name”: @“rose”,@“age”: @“18”,@“address”: @“guangzhoushiXXstreet”};其实也是1个对象,只不过跟我们之前一样的啊,也可以用简要的方式创建NSDictionary对象, 我们输出来看一下啊,NSLog(@“%@”,dict); 输出:address:guangzhouXXstreet age:18 name:rose 好了,以上就是我们NSDictionary字典数组的创建