KVC字典转模型底层实现原理

遍历字典里面所有的key

key:name
就去模型中查找有没有setName:,直接调用这个对象setName:赋值
假如没有找到setName:。就会去模型中查找有没有_name属性,_name = value
假如没有找到_name,还会去模型中查找name属性
最终没有找到,就会直接报错。

 + (instancetype)flageWithDict:(NSDictionary *)dict
{
    XMGFlag *flag = [[self alloc] init];

// 利用KVC字典转模型,下面实现方法就是此注释方法的实现
//    [flag setValuesForKeysWithDictionary:dict];
  
    [dict enumerateKeysAndObjectsUsingBlock:^(NSString *key, id obj, BOOL *stop) {
     NSString *funcName = [NSString stringWithFormat:@"set%@:",key.capitalizedString];
     if ([flag respondsToSelector:NSSelectorFromString(funcName)]) {
     [flag setValue:obj forKeyPath:key];
    }
}];

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