iOS 字典和数组插入nil崩溃的问题

错误日志:DictionaryTextDemo[29390:1329578] Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: ' -[__NSPlaceholderDictionary initWithObjects:forKeys:count:]: attempt to insert nil object from objects[1]'
objects[1]说明是第二个value值为空

//使用这种方式初始化的话,如果value有为nil的,会直接崩溃
NSDictionary *dictionary =@{@"key1" : value1,@"key2" : value2,@"key3" : value3};

//使用这种方式初始化,虽然可以避免崩溃,但是会导致nil被默认为结尾,造成后面不为nil的value缺失
NSDictionary *dictionary = [[NSDictionaryalloc]initWithObjectsAndKeys:value1,@"key1",value2,@"key2", value3 ,@"value3",nil];

最合理的方法还是对可能为空的value进行判断,可以用三目运算直接在上面两行代码里判断,也可以做if语句判断然后决定是否添加

//三目
NSDictionary *dictionary =@{@"key1" : (value1?:@"")};

//if判断
NSMutableDictionary *dic = [NSMutableDictionary arrayWith...];
if(value1)
{
    [dic setObject:value1 forKey@"key1"];
}

你可能感兴趣的:(iOS 字典和数组插入nil崩溃的问题)