setValueForKeysWithDictionary的底层实现

setValueForKeysWithDictionary这个方法会遍历字典,

然后调用setValue:forKeyPath: 根据字符串,进行属性匹配:

(1)根据key,到当前模型当中,去找有没有跟key相同名称的set方法;

  如果有,就会调用该set方法,给属性进行复制;

(2)如果没有set方法,还会去匹配,有没有跟key值相同,并且还有下划线的成员属性 _key;

  如果有,直接给下划线的成员属性赋值;

(3)如果没有下划线的成员属性,还会去匹配,有没有跟key值相同的成员属性,

  如果有,直接给成员成员属性赋值;

(4)如果还没有,就会调用当前模型setValue:forUndefinedKey:  

(5)如果还没有,直接报错。

原文地址:https://www.cnblogs.com/lyz0925/p/11459796.html