美文网首页
关于字典快速映射到对象的学习心得

关于字典快速映射到对象的学习心得

作者: 微春风 | 来源:发表于2016-08-06 09:21 被阅读0次

    关于字典快速映射到对象的注意事项:model setValuesForKeysWithDictionary:dic

    首先:正常的字典映射到对象是这样的:(图传不上来,手打一个吧)

    model.name=[dic[i] valueForKey:@"name"];

    下面就介绍一下快速映射的办法:不喜勿喷,其次你跟我喷不一定能喷过我。

    1.model里面属性数量要包含字典里面的key数量(可以大于,但不可以小于,所有的key都要包含,这是最基本的条件,否者会crash)

    2.key里面包含关键字的话是不能直接映射到对象的,但是可以用这个方法转换一下即可:(setValue:forUndefinedKey)也可以修改key里面的关键字,请看实例:

    3.实例:model:

    #import

    @interface PersonInfoModel : NSObject

    @property (nonatomic, strong) NSString  *name;

    @property (nonatomic, strong) NSString  *age;

    @property (nonatomic, strong) NSString  *address;

    @end

    Dic:

    NSDictionary*dic = [NSDictionary dictionaryWithObjectsAndKeys:

    @"Y.X.",  @"name",

    @"26",    @"age",

    @"海淀区",@"address", nil];

    这是一一对应的,不会crash

    3.1

    给model怎么加属性:

    @property

    (nonatomic, strong) NSString  *aaaa;

    现象:也不会报错

    解释:包含了dic里面的key

    3.2如果给dic增加键值对那就回报错

    3.3关于key中关键字的处理(setValue:forUndefinedKey)

    假如

    NSDictionary*dic = [NSDictionary dictionaryWithObjectsAndKeys:

    @"Y.X.",  @"name",

    @"26",    @"id",

    @"海淀区",

    @"address", nil];里面包含id关键字的话,是无法直接映射到model对象里面的

    在.h里面声明方法:

    -(void)setValue(id)value forUndefinedKey:(NSString*)key;

    在.m里面实现方法:

    -(void)setValue(id)value forUndefinedKey:(NSString*)key

    {

    If ([keyisEqualTString:@”id”])

    {

    Self.myID=value;

    }

    }

    即可将key的value转给model的MYID这个属性

    最后:可以用model继承model,然后重载方法即可实现敏感字的转换。以后又新的心得再加上来。幸运,一定会眷顾积极上上的人。

    相关文章

      网友评论

          本文标题:关于字典快速映射到对象的学习心得

          本文链接:https://www.haomeiwen.com/subject/vlsksttx.html