美文网首页
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的底层实现原理

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