美文网首页
KVC的底层实现原理

KVC的底层实现原理

作者: Mr_董 | 来源:发表于2016-04-26 16:40 被阅读204次
  • 遍历字典里面所有的key
  • 例如:key:name
  • 就去模型中查找有没有setName:,直接调用这个对象setName:赋值
  • 假如没有找到setName:。就会去模型中查找有没有_name属性,_name = value
  • 假如没有找到_name,还会去模型中查找name属性
  • 最终没有找到,就会直接报错。
+ (instancetype)flageWithDict:(NSDictionary *)dict
{
    //模型
    DZFlag *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:@selector(funcName)]) {
            
            [flag setValue:obj forKeyPath:key];
            
        }
    }];

    return flag;
}


- (void)setIcon:(NSString *)icon
{
//    NSLog(@"%s",__func__);重写set方法,返回控制器想要的东西。
    _icon = [UIImage imageNamed:icon];
}

相关文章

  • KVC /KVO的底层原理和使用场景

    1 KVC(KeyValueCoding) 1.1 KVC 常用的方法 1.2 KVC 底层实现原理 1.3 KV...

  • KVC /KVO的底层原理和使用场景

    1 KVC(KeyValueCoding) 1.1 KVC 常用的方法 1.2 KVC 底层实现原理 1.3 KV...

  • KVC底层实现步骤

    参考 iOS底层-KVC使用实践以及实现原理 [a setValue:value forKeyPath:@"ico...

  • Runtime应用之KVC

    runtime可以以底层的角度来对一些实现方式进行更改,比如说KVC首先,先来了解下KVC的底层原理:key : ...

  • KVC 和KVO

    1)KVC 底层实现原理 KVC运用了一个isa-swizzling技术。isa-swizzling就是类型混合指...

  • iOS - KVO

    [toc] 参考 KVO KVC 【 iOS--KVO的实现原理与具体应用 】 【 IOS-详解KVO底层实现 】...

  • KVC底层实现原理

    KVC基本使用 定义DPLPerson和DPLCat类,DPLCat类拥有weight属性,DPLPerson类拥...

  • KVC 底层原理实现

    首先放出官方文档的连接:(官网很重要哦)https://developer.apple.com/library/a...

  • KVC底层实现原理

    KVC: Key-Value Coding,即键值编码。通过属性名称字符串间接访问属性的机制。 常用方法 setV...

  • Swift KVO和KVC底层实现原理

    Swift KVO和KVC底层实现原理 demo 地址:https://gitee.com/johnson__sa...

网友评论

      本文标题:KVC的底层实现原理

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