zoukankan      html  css  js  c++  java
  • iOS开发之--字典快速赋值

    以往在学习解析数据的时候,我们用的方法都是一个一个生命,然后加到字典里面,然后进行复制,那样的麻烦,而且也不能保证一次成功,不出错,我是遇到过多次key值的问题!

    其实可以把复制的过程替换成一句话:

    [test setValuesForKeysWithDictionary:dic];

    问题一:model里面有不存在与dic中的元素会怎样?

    这个时候,在控制台输出为空“=(null)”

    问题二:如果字典当中有不存在与model中的元素会怎样?

    会出错,或者崩溃,那是因为在model中,没有对应的age属性,所以导致了程序崩溃

    解决方法:实现一个方法:setValue:forUndefinedKey: ,这个方法能过滤掉不存在的键值,

    具体操作:

    在model中添加

    .h文件中添加:

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

    并需要在m文件中实现:

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

    并不需要要方法中写任何内容!

    问题三:如果dic中的key与model中的变量名字不同,应该怎么赋值?

    从前面我们可以知道,dic中key赋值给model中与key同名的属性。

    如果dic中的key值为username,model中的名字为name,等关键字,应该怎么变化。

    解决:从setValue:forUndefinedKey方法入手。

    改变dic中的值,还有model种的属性,

    完善model中的setValue:forUndefinedKey方法:

    -(void)setValue:(id)value forUndefinedKey:(NSString *)key{
            if([key isEqualToString:@"id"])
            {
                self.age=value;
            }
            if([key isEqualToString:@"username"])
            {
                self.name=value;
            }
        }

    这样就可以了!当然也可以直接在dic和model里面修改成一致的!

  • 相关阅读:
    matplotlib直方图学习小记
    matplotlib饼状图学习小记
    P2306 被yyh虐的mzc
    P1776 宝物筛选_NOI导刊2010提高(02)&& 多重背包二进制优化
    51NOD 1445 变色DNA
    51NOD 1459 迷宫游戏
    CODEVS 1001 舒适的路线
    P4514 上帝造题的七分钟
    1082 线段树练习 3 && 树状数组区间修改区间查询
    P4145 上帝造题的七分钟2 / 花神游历各国
  • 原文地址:https://www.cnblogs.com/hero11223/p/6056554.html
Copyright © 2011-2022 走看看