美文网首页
字典值为nil报错 second object of each

字典值为nil报错 second object of each

作者: 野咪咕 | 来源:发表于2021-06-18 11:41 被阅读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:

    相关文章

      网友评论

          本文标题:字典值为nil报错 second object of each

          本文链接:https://www.haomeiwen.com/subject/vdykyltx.html