键值编码KVC

Posted 黄增松的技术博客

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了键值编码KVC相关的知识,希望对你有一定的参考价值。

  • 动态设置:setValue:属性值 forKey:属性名用于简单路径;setValue:属性值 forKeyPath:属性路径用于复合路径,例如Person有一个Account类型的属性,那么person.account就是一个复合属性

  • 动态读取:valueForKey:属性名、valueForKeyPath:属性名

 

[person1 setValue:@"llx" forKey:@"name"];  
[person1 setValue:@100000000.0 forKeyPath:@"account.balance"];   

KVC读取属性的查找规则

假设现在要利用KVC对a属性进行读取。

如果是动态设置属性,则优先考虑调用setA方法。如果没有该方法则优先考虑搜索成员变量_a,如果仍然不存在则搜索成员变量a,如果最后仍然没有搜索到这会调用这个类的setValue:forUndefinedKey:方法。在搜索过程中,不管这些方法、成员变量是私有还是公共的都能正确设置。

如果是动态读取属性,则优先调用a的getter方法,如果没有搜索到则会优先搜索成员变量_a,如果仍然不存在则会搜索成员变量a,如果仍然没搜索到就会调用这个类的valueforUndefinedKey:方法。而且,在搜索过程中,不管这些方法、成员变量是私有的还是公有的都能正确读取。

以上是关于键值编码KVC的主要内容,如果未能解决你的问题,请参考以下文章

Cocoa KVC:“类不符合键值编码”

键值编码KVC

KVC与KVO

重点 : KVC/KVO

iOS开发UI篇—KVC简单介绍

xcode KVC:Key Value Coding 键值编码