iOS Crash: KVC键值编码

前言

最近项目中因为数据问题,导致了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]就可以正常运行了,这个问题隐藏了好久,疏忽了😢

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容