看别人的代码,看到这个方法 -setValuesForKeysWithDictionary: 。原来苹果已经提供了字典转model的方法,自己以前傻傻的一个个赋值,后来用YYModel第三方库。原生的方法还是蛮好用的。
示例
创建一个model类,并实现-description方法,方便打印数据。
@interface AModel : BaseModel
@property NSString *name;
@property NSString *sex;
@property NSString *info;
@property NSString *other;
@end
@implementation AModel
- (NSString *)description
{
return [NSString stringWithFormat:@"{name=%@,sex=%@,info=%@,other=%@}", self.modelId, self.name, self.sex, self.info, self.other];
}
@end
创建一个字典,赋值给model
NSDictionary *dic = @{
@"name": @"陆仁丁",
@"sex": @"女",
};
AModel *model = [[AModel alloc] init];
[model setValuesForKeysWithDictionary:dic];
NSLog(@"%@", model);
输出
{
name=陆仁丁,sex=女,info=(null),other=(null)}
字典中不包含 info 和 other 的值,所以输出为null。
这个方法-setValuesForKeysWithDictionary: 有几个需要注意的地方。
1、字典中存在一个key,而model中没有对应属性,会崩溃
当字典中存在一个key而model中没有时会调用该方法
-setValue: forUndefinedKey:
model类中实现该方法就不会崩溃了,还可以将值赋给其他属性
- (void)setValue:(id)value forUndefinedKey: