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;}