——黑马程序员——OC中Foundation框架NSDictionary的使用

-----------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值赋值

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值