NSDictionary 使用细节

NSDictionary创建有两种方法,
1.NSDictionary *dic =@{@"xxx":@"xxx”};
2.NSDictionary *dic =[NSDictionary dictionaryWithObjectsAndKeys:string01,@"xxx",string02,@“xxx”,string03,@"xxx",nil];

区别在于:
但是用第一种创建的dic里面的元素一定不能为空,否则就会崩溃。
但是第二种也有缺陷 当string01 为空的时候 string02 后面的也会变null

解决方案:
当object有可能为nil的时候,采用setObject:forKey:

NSString* string1 = nil;

NSString* string2 = @"string2";

NSMutableDictionary* dic = [NSMutableDictionary dictionary];

if (string1) {

    [dic setObject:string1 forKey:@"string1"];

}

if (string2) {

    [dic setObject:string2 forKey:@"string2"];

}

[dic setObject:@"string3" forKey:@"string3"];

当然还有更便捷的方法,使用setValue:forKey:

NSString* string1 = nil;

NSString* string2 = @"string2";

NSMutableDictionary* dic = [NSMutableDictionary dictionary];

[dic setValue:string1 forKey:@"string1"];

[dic setValue:string2 forKey:@"string2"];

[dic setValue:@"string3" forKey:@"string3"];

请注意,setValue:forKey:与setObject:forKey:不完全等同,最大的区别有两点:

  1. setValue:forKey:只接受NSString*类型的key
  2. setValue:forKey:当value为nil时,将调用removeObjectForKey:
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 整理出的一些简单实用的OC笔试题,如有错误之处希望大家及时提出,以便修改,不误人子弟.1、不会立刻使引用计数器改变...
    李xiao屁的忧伤阅读 8,122评论 1 20
  • 1. 熟悉Git的基本流程 git clone git add -A git commit -m " " git ...
    9bf19a4010ab阅读 5,640评论 0 2
  • 数组: 系统提供的数组类:类似于C语言中的数组功能。 数组是一个大容器,数组中可以储存不同的联系对象,但必须要保证...
    Sherry宇阅读 2,905评论 0 0
  • #if 0 //字典:用来存储具有以一一对应关系的数据,本质上也是一个大容器 //自定义初始化方式 NSDicti...
    修木头阅读 3,199评论 0 0
  • 一、类和对象 1.定义:类是具有相同特征和行为的事物的抽象,对象是类的具体化,类是对象的类型。 2.面向对象的三大...
    陈亮宇阅读 2,962评论 1 6