kvc可以直接对私有属性进行赋值

kvc可以直接对私有属性进行赋值.

p.age =20; 当person有一个height的私有属性时就不能通过.语法赋值了

[p setValue:@170 forKey:@"height"];

p.dog = [[Dog alloc] init];  [p setValue:@200 forKey:@"dog.weight"];

会先去找有没有dog这个key,然后去找有没有weight这个属性。所以我们在使用kvc的时候,最好用forKeyPath这个方法

kvc字典转模型

- (instancetype)initWithDict:(NSDictionary*)dict

{if(self= [super  init]) {    [self setValuesForKeysWithDictionary:dict];    }    returnself;}

kvo的实现原理


你可能感兴趣的:(kvc可以直接对私有属性进行赋值)