字典值为nil报错 second object of each

2021-06-18  本文已影响0人  野咪咕

在维护老项目的时候发的问题:

NSDictionary * dic = [NSDictionarydictionaryWithObjectsAndKeys:@"key1",@"你好",@"key2",@"哈哈",nil];

但是后来发现dic中 key2 的值 value 有的时候是nil,就会崩溃。系统 14.3 

@{@"key1",@"你好",@"key2",@"哈哈"}

这种方式也会崩溃

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

NSString*str1=nil;

NSString*str2=@"str2";

NSMutableDictionary*dic=[NSMutableDictionary dictionary];

if(str1){

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

}

if(str2){

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

}

可以使用更便捷的方法,使用setValue:forKey:

NSMutableDictionary*dic=[NSMutableDictionary dictionary];

[dic setValue:@"你好" forKey:@"key1"];

[dic setValue:@"哈哈" forKey:@"key2"];

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

setValue:forKey:只接受NSString*类型的key

setValue:forKey:当value为nil时,将调用removeObjectForKey:

上一篇下一篇

猜你喜欢

热点阅读