zoukankan      html  css  js  c++  java
  • 关于 self setValueForKeysWithDictionary

    记录一下.

    作用:将字典转为模型。

    优点:省时省力,不需要一个个的得到字典的vavlue,然后复制给model属性

    注意:当model对象中,包含一个属性,但是字典里面没有的时候,不会报错.但是,当字典里面有一个键,没有在model找到对应的属性时,会报错.

    首先,先初始化一个字典,如下所示:

    -------------------------------------------------------------------------------------

        NSDictionary *dic = [NSDictionary dictionaryWithObjectsAndKeys:
                             @"Y.X.",  @"name",
                             @"26",    @"age",
                             @"海淀区", @"address", nil];

    -------------------------------------------------------------------------------------

    创建PersonInfoModel,代码如下所示

    -------------------------------------------------------------------------------------

    #import <Foundation/Foundation.h>

    @interface PersonInfoModel : NSObject

    @property (nonatomic, strong) NSString  *name;
    @property (nonatomic, strong) NSString  *age;
    @property (nonatomic, strong) NSString  *address;

    @end

    -------------------------------------------------------------------------------------

    #import "PersonInfoModel.h"

    @implementation PersonInfoModel

    @end

    -------------------------------------------------------------------------------------

    测试后打印信息如下:

    以上是很标准的使用方法,我们再在属性中添加 other,如下图所示:

    也没有出错,可以正常使用,也就是说用字典初始化对象时,只要对象中都包含了这些键值,是可以正常初始化的,我们再在字典中添加一个键值对,如下图所示:

    直接导致程序崩溃,因为该对象中没有 sex 这个属性,解决方法就是,实现一个方法setValue:forUndefinedKey:,如下图所示:

    这样子就会过滤掉给不存在的键值赋值,如果有个属性是id,而id本身就是系统自身关键字,不能够当做属性使用,怎么办?

    结论:

    setValue:forUndefinedKey:这个方法是关键,只有存在这个方法后,才可以过滤掉不存在的键值对而防止崩溃,同时,setValue:forUndefinedKey:这个方法中还可以改变系统的敏感字,或者,你手动的映射key值不同的值,随你自己喜欢.

  • 相关阅读:
    2020_java面试
    Centos7.2 安装docker、mysql和redis
    【源码讲解】Spring事务是如何应用到你的业务场景中的?
    奇葩说今晚聊前任|扒一扒你的前任企业邮箱
    一封一封邮件发送太累?个人邮箱快速群发解决烦恼
    企业邮箱客户端收发服务器如何设置?
    163VIP邮箱怎么设置邮件签名?如何群发邮件?
    企业版邮箱哪个适合学校邮箱?企业邮箱托管服务
    企业版邮箱购买哪个?公司邮箱如何申请?
    公司邮箱登录入口是?公司邮箱申请入口在?
  • 原文地址:https://www.cnblogs.com/lomomiao/p/4995941.html
Copyright © 2011-2022 走看看