KVC

概述

KVC是Key Value Coding的简称,即键值编码,提供一种机制来间接访问对象的属性。而不是通过调用Setter、Getter方法访问。

KVC使用

(1)获取值 

valueForKey: 传入NSString属性的名字

valueForKeyPath:  属性的路径,xx.xx

valueForUndefinedKey:   默认实现是抛出异常,可重写这个函数做错误处理

(2)修改值

setValue:forKey:

setValue:forKeyPath:

setValue:forUnderfinedKey:

setNilValueForKey: 对非类对象属性设置nil时调用,默认抛出异常。

KVC用途

1、对私有变量进行赋值

2、字典转模型

KVC键值查找

1、setValue:forKey:搜索方式

(1)首先搜索setKey:方法。(key指成员变量名,首字母大写)

(2)上面的setter方法没找到,如果类方法accessInstanceVariablesDirectly返回YES。那么按 _key,_isKey,key,iskey的顺序搜索成员名。(NSKeyValueCodingCatogery中实现的类方法,默认实现为返回YES)

(3)如果没有找到成员变量,调用setValue:forUnderfinedKey:

2、valueForKey:的搜索方式

(1)首先按getKey,key,isKey的顺序查找getter方法,找到直接调用。如果是BOOL、int等内建值类型,会做NSNumber的转换。

(2)上面的getter没找到,查找countOfKey、objectInKeyAtindex、KeyAtindexes格式的方法。如果countOfKey和另外两个方法中的一个找到,那么就会返回一个可以响应NSArray所有方法的代理集合的NSArray消息方法。

(3)还没找到,查找countOfKey、enumeratorOfKey、memberOfKey格式的方法。如果这三个方法都找到,那么就返回一个可以响应NSSet所有方法的代理集合。
(4)还是没找到,如果类方法accessInstanceVariablesDirectly返回YES。那么按 _key,_isKey,key,iskey的顺序搜索成员5名。

(5)再没找到,调用valueForUndefinedKey。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值