-----------android培训、java培训、java学习型技术博客、期待与您交流!-----------
OC中Foundation框架NSDictionary的使用
一、NSDictionary基本概念
NSDictionary是用来存放一对键值,可以通过一个key(键),就能找到对应的value(值)。NSDictionary 是不可变的,一旦初始化完毕后,里面的内容无法修改
二、NSDictionary的创建
1、创建一个空字典
+(instancetype) dictionary;
NSDictionary *d1 = [NSDictionary dictionary ];
2、创建一个字典添加一组键值
+(instancetype) dictionaryWithObject:(id) forKey: (id <NSCopying> ) ; // 根据键取值
NSDictionary *d2 = [NSDictionary dictionaryWithobject:@ "zhangsan" forKey :@"zs" ];
3、创建一个字典添加多组键值
+(instancetype) dictionaryWithObjectsAndKeys: (id) firstObject,....;
NSDictionary *d3 = [NSDictionary dictionaryWithObjectsAndKeys:@ "vaule1" , @"k1" , @ "vaule2" , @"k2" , nil ];
4、快速创建一个字典(简写形式)
NSDictionary *d4 = @{ @"key1":@"value1", @"key2":@"value2" , @"key3":@"value3" };
5、以快速方式访问字典(简写形式)
NSString *str = dict[@"key2"];
根据key2的键值快速获取value2的值
注意:
1、输出打印时以%@格式输出,用大括号括起来,打印键值时是无序的,
2、NSDictionary 的key值和value值都必须是对象类型
3、key值不能重复,如果最后添加的将不能被保存
三、NSDictionary的基本使用
1、获取NSDictionary的长度
-(NSUInteger) count;
获取字典d4的长度
NSLog(@"%lu", d4.count );
2、根据key值取出value值
-(id) objectForKey:(id)aKey;
NSString * str = [d4 objectForKey:@"zs"];
四、NSDictionary 的遍历
当使用for循环时只能获取字典的key值,而不能获得value值
第一种遍历方法:快速枚举法
1、先获取所有的key的值,使用快速枚举法(for in循环增强)
2、在根据key值获取value的值
for(NSString * key in d4){
NSLog(@"key = %@ value = %@" , key, [d4 objectForKey: key] ) ;
}
第二种方法:block-(void) enumerateKeysAndObjectsUsingBlock: ^(id key, id obj, BOOL *stop )block
[ d4 enumerateKeysAndObjectsUsingBlock: ^(id key, id obj, BOOL *stop ){
NSLog(@"%@——%@", key , obj);
} ];
五、NSDictionary的文件操作
1、把字典保存到文件中
-(BOOL)writeToFile: (NSString *) path atomically: (BOOL) ;
[d4 writeToFile: @”文件路径" atomically: YES/NO] ;把字典d4 写入到文件中 返回的是BOOL类型的
-(BOOL)writeToURL: (NSURL *) url atomically: (BOOL) atomically;
2、从文件中读取字典
-(instancetype) dictionaryWithContentsOfFile: (NSString *);
NSDictionary *dict = [ NSDictionary dictionaryWithContentsOfFile: @"文件路径"];
注意:
字典可以用作离线数据的编写
六、NSMutableDictionary 的使用及注意事项
NSMutableDictionary 和 NSMutableString、NSMutableArray的用法基本相同
1、添加一组键值对
-(void) setObject:(id)anObject forKey:(id);
2、通过一个key删除对应的value值
-(void)removeObjectForkey:(id);
3、
给字典添加键值时如果key相等时不能添加的
根据key值修改字典中value值时可以 简写
d4 [@"zs"] = @"***"; 把字典d4 中key值为zs的值该为***
NSArray和NSDictionary的区别
1、NSArray 是有序的, NSDictionary 是无序的
2、NSArray 是通过下标访问元素, NSDictionary 是通过key访问元素
3、 NSArray 是通过[]创建, NSDictionary 是通过{ }创建
4、 NSArray 是通过@“赋值内容”直接赋值, NSDictionary 是通过key值赋值