KVC

KVC底层实现

// setValuesForKeysWithDictionary底层实现

//  利用KVC字典转模型,
    [flag setValuesForKeysWithDictionary:dict];

    // 1.遍历字典中的所有key
    [dict enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) {
        // 2.给模型的属性赋值,利用KVC,把字典中的key当做模型的属性名使用,字典中的值传递给模型的属性.
        [flag setValue:obj forKey:key];
        // name -> icon
        // KeyPath:模型中的属性名
        // 属性的值

//        [flag setValue:dict[@"name"] forKey:@"name"];
//        [flag setValue:dict[@"icon"] forKey:@"icon"];
    }];



// setValue:forKey:底层实现
// 给模型中的icon属性赋值
// [flag setValue:dict[@"icon"] forKey:@"icon"];

// 1.首先去寻找模型中有木有setIcon:方法,直接调用setIcon:方法,[flag setIcon:dict[@"icon"]]
// 2.接着寻找模型中有没有icon的属性名,如果有,就直接赋值 icon = dict[@"icon"]

// 3.接着寻找模型中有没有_icon的属性名,如果有,就直接赋值 _icon = dict[@"icon"]

// 4.找不到,直接报错,setValue:forUndefinedKey:

results matching ""

    No results matching ""