美文网首页程序员iOS学习开发iOS Developer
KVC中的setValuesForKeysWithDiction

KVC中的setValuesForKeysWithDiction

作者: 張贺 | 来源:发表于2016-08-02 12:22 被阅读280次
图片来自500px

文 || 張贺

  • setValuesForKeysWithDictionary的底层实现:
    遍历字典中的所有Key,去模型中查找有没有对应的属性名,如果就给这个属性赋值。

    + (instancetype)flagWithDict:(NSDictionary *)dict
    {
      Flag *flag = [[self alloc] init];
    // [flag setValuesForKeysWithDictionary:dict];
    // KVC
    // setValuesForKeysWithDictionary底层实现:
    // 遍历字典中的所有Key,去模型中查找有没有对应的属性名,如果就给这个属性赋值
      [dict enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) {
    // 给模型的key属性名赋值value
        [flag setValue:obj forKey:key];
       }];
      return flag;
    }
    

[flag setValue:obj forKey:key]; 也是一个KVC。

  • setValue:forKey: 底层实现:(字典中有icon:touxiang.jpg)
    1.首先去模型中查找有没有setIcon方法,如果有,就直接调用 [flag setIcon:@"touxiang.jpg"]
    2.继续去模型中查找有没有icon属性,如果有,就直接访问成员属性 icon = @"touxiang.jpg"
    3.继续去模型中查找有没有_icon属性,如果有,就直接访问成员属性 _icon = @"touxiang.jpg"
    4.找不到,就直接报错. [flag setValue:forUndefinedKey:]
  • setValuesForKeysWithDictionary报错:
    如果字典中存在模型里没有的key,程序就会崩溃:


    Snip20160802_1.png

    解决办法是在模型中实现
    -(void)setValue:(id)value forUndefinedKey:(NSString *)key{
    }


2016.8.2

相关文章

  • KVC中的setValuesForKeysWithDiction

    文 || 張贺 setValuesForKeysWithDictionary的底层实现:遍历字典中的所有Key,去...

  • iOS开发中你不知道的一些小技巧(收藏)

    KVC技巧 registerDefaults: 一、KVC技巧 在KVC编程中, valueForKey: 在一些...

  • 2.2 KVC和KVO详解

    image.png KVC KVC定义 KVC(Key-value coding)键值编码,就是指iOS的开发中,...

  • KVC

    今天和大家讨论一下OC中KVC(KeyValueCoding)键值编码 KVC定义 KVC(KeyValueCod...

  • iOS之KVC字典转模型的底层实现

    KVC: Key Value Coding (键值编码) 在iOS开发中,KVC是我们经常要使用的技术.那么KVC...

  • KVO&KVC

    KVC KVC: key value coding 键值编码 通过KVC语法,可以修改对象中的属性。设置值时:例...

  • 无标题文章

    ios中的 kvc和kvo的区别 KVC编程时setValue(value: AnyObje...

  • iOS底层探索之KVC

    前言 在iOS的面试中,KVC几乎是必问的面试题之一,那么到底什么是KVC,KVC的原理是什么呢? KVC又称键值...

  • iOS KVC与 KVO详解

    我们先看KVC KVC KVC(Key-value coding)键值编码,就是指iOS的开发中,可以允许开发者通...

  • 说一下KVC和KVO

    本篇采用简单的例子,来介绍 iOS 中的 KVC 和 KVO 的用法和实现原理。 一、KVC 1. KVC是什么 ...

网友评论

    本文标题:KVC中的setValuesForKeysWithDiction

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