iOS NSDictionary 转 model

本文介绍了如何在iOS中将NSDictionary转换为model,重点讨论了-setValuesForKeysWithDictionary:方法的使用,包括处理字典中不存在的key、value为nil的情况,以及不同的空值处理策略。还提到了YYModel库的替代方案,并建议使用BaseModel进行统一处理。
摘要由CSDN通过智能技术生成

看别人的代码,看到这个方法 -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:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值