+ (Person *)createModelWithDic:(NSDictionary *)dic{
// 创建对象 将字典中的数据赋值给属性 返回对象
Person *model = [[Person alloc]init];
/*普通写法
model.name = dic[@"name"];
model.sex = dic[@"sex"];
model.age = dic[@"age"];
*/
// KVC 在字典中获取到key model中查找同名的属性 value赋值给属性
[model setValuesForKeysWithDictionary:dic];
// 注意:如果没有找到同名属性 或者key是系统关键字时 赋值失败 程序崩溃
// 解决方法 重写KVC中的方法 setValue forUndefinedKey
return model;
}
- (void)setValue:(id)value forUndefinedKey:(NSString *)key{
//字典中的key没有找到同名属性 该方法调用
// value字典中的 key字典中的
if([key isEqualToString:@"id"]){
[self setValue:value forKey:@"ID"];
// self.ID = value;
}
}
#pragma mark -- 自定义输出格式
- (NSString *)description{
return [NSString stringWithFormat:@"\nname:%@\n sex:%@\n age:%@\n id:%@ ",self.name, self.sex, self.age, self.ID];
}