在维护老项目的时候发的问题:
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:
网友评论