美文网首页
iOS Crash: KVC键值编码

iOS Crash: KVC键值编码

作者: 喔牛慢慢爬 | 来源:发表于2021-03-16 10:56 被阅读0次

    前言

    最近项目中因为数据问题,导致了KVC由字典转数据model时产生了崩溃,原因是后台返回的数据中存在key对应的value为空,导致了重写的setNilValueForKey方法抛出异常。

    模拟Crash

    { 
        name =  null;
        age = 24;
    }
    

    在OC中模拟的话可以将value设置为[NSNull null];
    调用setValuesForKeysWithDictionary修改Model中对应key的属性,将字典类型数据转化为model。此时如果model类中未重写setNilValueForKey方法系统将抛出以下类似错误:

    Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '[<People 0x100200080> setNilValueForKey]: could not set nil as the value for the key name.' 
    

    所以我们需要再model类中重写setNilValueForKey方法,为value为空的key设置默认值,也可以不做处理。

    我们定义的model中已经重写了setNilValueForKey方法,但多写了一句话:调用了父类的这个方法:[super setNilValueForKey:key],同样引起了Craash😭😭😭

    - (void)setNilValueForKey:(NSString *)key
    {
        [super setNilValueForKey:key];
    }
    

    删除[super setNilValueForKey:key]就可以正常运行了,这个问题隐藏了好久,疏忽了😢

    相关文章

      网友评论

          本文标题:iOS Crash: KVC键值编码

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