OC之KVC

KVC Key Value Coding
是一种可以直接通过字符串的名字(key)来访问类属性的机制。


通过KVC,可以获取不存在getter方法的对象值, 无需通过对象指针直接访问


valueForKey: 和  setValue: forKey: 如若对象的实例变量为基本数据类型时,我们需要对数据进行封装。


路径valueForKeyPath: 和  setValue: forKeyPath: 
     除了通过键设置值外,键/值编码还支持指定路径,像文件系统一样,          
     用“点”号隔开。 


KVC查询类属性的顺序:
①检查是否存在 -<key> -is<key> (只针对布尔值有效)或者 -get<key> 的访问器方法,如果有可能,就是用这些方法返回值;
     检查是否存在名为 -set<key>: 的方法,并使用它做设置值。对于 -get<key> -set<key>: 方法,将大写 Key 字符串的第一个字母,并与 Cocoa 的方法命名保持一致;
②如果上述方法不可用,则检查名为 -_<key> -_is<key> (只针对布尔值有效)、 -_get<key> -_set<key>: 方法;
③如果没有找到访问器方法,可以尝试直接访问实例变量。实例变量可以是名为: <key> _<key>;



一对多的关系
     如果向NSArray请求一个键值,它实际上会查询你数组中得每个对象来查找这个键值,然后将查询结果打包到另一个数组中并返回给你。


KVC的简单运算:
只有这五个方法。返回的是对象,NSNumber. 

集合运算符是一个特殊的Key Path,可以作为参数传递给valueForKeyPath:方法, 注意只能是这个方法 ,如果传给了valueForKey:方法保证你程序崩溃。

KVC的运算可以直接对数组对象做求和等运算


KVC 优点:不用调用和写一堆set、get方法,方便简洁,求平均值,总值什么的很简便。
缺点:key容易写错,写错就崩溃。 




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值