OC中Foundation框架之NSDictionary、NSMutableDictionary
NSDictionary概述
NSDictionary的作用类似:通过一个key ,就能找到对应的value
同样 NSDictionary是不可变的,一旦初始化完毕,里面的内容就无法修改
NSDictionary创建
1 +(instancetype) dictionary; 2 +(instancetype)dictionaryWithObject:(id) object forKey:(id<NSCopying>)key;//objectForKey,根据键取值 3 +(instancetype)dictionaryWithObjectsAndKeys:(id)firstObject,...; 4 5 例: 6 先值,后key 自动组成一对,另外类似java的map 存入后的数据时无序的 7 [NSDictionary dictionaryWithObjectAndKeys:@"张三",@"zs",@"李四",@"ls",nil]; 8 9 快速创建字典 10 NSDictionary *dictator =@{@"zs":@"zhangsan",@"ls":@"lisi",@"ww":@"wangwu"}; 11 12 注意:key值不能重复,在java中key重复时,会覆盖value,而oc中key重复则不会存入;
NSDictionary的基本使用
1 //返回字典的键值对数目 2 -(NSUInteger)count; 3 //根据key取出value 4 -(id)objectForKey:(id)aKey;
NSDictionary的遍历
1 使用增强型for循环 2 for(NSString *str in NSDictionary){ 3 NSString *ss =[ dic objectForKey:str] 4 NSLog(@"%@ --->%@",str,ss); 5 } 6 7 使用block进行遍历 8 [ns enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) { 9 NSLog(@"%@---->%@",key,id); 10 }]
NSDictionary的文件操作
1 将NSDictionary写入文件中 2 -(BOOL)writeToFile:(NSString *)path atomically:(BOOL) useAuxiliaryFile ; 3 -(BOOL) writeToURL:(NSURL *)url atomically:(BOOL) atomically; 4 5 例: 6 //写入文件 7 NSDictionary *dictator=@{@"zs":@"zhangsan",@"ls":@"lisi",@ww":@wanggu"}; 8 9 [dict3 writeToFile:@"/Users/liwei/Desktop/dict.plist" atomically:YES]; 10 11 //读取文件 12 NSDictionary *dict4=[NSDictionary dictionaryWithContentsOfFile:@"/Users/liwei/Desktop/dict.plist"]
NSMutableDictionary概述
1 什么是NSMutableDictionary 2 NSMutableDictionary 是NSDictionary得子类 3 NSDictionary是不可变的,一旦初始化完毕后,它里面的内容就永远是固定的,不能删除里面的元素,也不能再往里面添加元素 4 NSMutableDictionary 是可变的,可以随时往里面添加、更改、删除元素
NSMutableDictionary常用方法
1 添加一个键值对(会把aKey之前对应的值给替换掉) 2 -(void)setObject :(id) anObject forKey:(id <NSCopying>)aKey; 3 通过aKey删除对应的value 4 -(void)removeObjectForKey:(id)aKey; 5 通过aKey删除对应的value 6 -(void)removeAllObjects; 7 删除所有的键值对
NSMutableDictionary简写形式
1 NSMutableDictionary *dict =[NSMutableDictionary dictionary]; 2 //快速创建字典 3 dict.dictionary = @{@"name":@"bbb",@"age":@"18"}; 4 //添加值到Dicitonary中 5 [dict setObject:@"man" forKey:@"sex"]; 6 //查看字典内容 7 NSLog(@"%@",dict);
NSDictionary与NSArray对比
1 区别: 2 1)NSArray是有序的,NSDictionary是无序的 3 2)NSArray是通过下标访问元素,NSDictionary是通过key访问元素 4 5 NSArray的用法 6 1)创建 7 @[@"java",@"rose"](返回是不可变数组) 8 2)访问 9 id d =array[1]; 10 3)赋值 11 array[1]=@"jack"; 12 13 NSDictionary的用法 14 1)创建 15 @{@"name";@"jack",@"phone":@"10086"}(返回是不可变字典) 16 2)访问 17 id d =dict[@"name"]; 18 3)赋值 19 dict[@"name"]=@"jack";