iOS开发 KVC

一. KVC名词解释

KVC(key-value coding)键值编码,是指在iOS开发中开发者可以在运行时动态地通过key值去设置和访问对象的属性的一种方法。由于它是一种基于运行时的编程方式而不是在编译时,所以被很多开发者惯称为iOS开发中的黑魔法之一。

二.KVC最重要的四个方法:

 1. (void)setValue:(nullable id)value forKey:(NSString *)key;//通过Key来设值
 2. (nullable id)valueForKey:(NSString *)key;//通过Key来取值
 3. (void)setValue:(nullable id)value forKeyPath:(NSString *)keyPath;//通过KeyPath来设值
 4. (nullable id)valueForKeyPath:(NSString *)keyPath;//通过KeyPath来取值

三.KVC的使用

  1. KVC设值 :见👆方法1。(执行顺序:setKey->_key->_iskey->key->isKey)
  2. KVC取值 :见👆方法2。 (执行顺序:getKey->_key->_isKey->key->isKey)
  3. KVC使用keyPath:见👆方法3和4。(主要针对那种需要多次KVC的情况,比如一个类的属性是一个自定义类或者一个复杂数据类型,那么对这个自定义类的属性或者数据类型的属性进行赋值取值操作时,就不用再使用两次KVC了,直接通过路径KeyPath寻找key。)
  4. KVC处理异常 :常见情况是用了错误的key,或者就是对非对象类型(比如值类型)赋值nil。这时候首先要保证避免这种情况的发生,再有就是最好重写setValueForUndefinedKey:和setNilValueForKey:方法
  5. KVC处理数值和结构体类型属性:valueForKey:会自动将值类型封装成对象,但是setValue:forKey:却不行。必须手动将值类型转换成NSNumber或者把结构体转换成NSValue类型,否则就会直接抛出异常。
  6. KVC键值验证(Key-Value Validation):一般情况下, 这个验证KVC不会主动调用,需要开发者手动去添加,也算是给了我们开发者一次纠错的机会。
- (BOOL)validateValue:(inoutid*)ioValue forKey:(NSString*)inKey error:(outNSError**)outError;
  1. KVC处理集合:简单集合运算符(@avg, @count , @max , @min ,@sum)和对象运算符(返回数组:@distinctUnionOfObjects去重后的数组@unionOfObjects未去重的数组)
  2. KVC处理字典
    KVC里面还有两个关于NSDictionary的方法:
    dictionaryWithValuesForKeys:是指输入一组key,返回这组key对应的属性,再组成一个字典。
    setValuesForKeysWithDictionary是用来修改Model中对应key的属性。
- (NSDictionary<NSString *, id> *)dictionaryWithValuesForKeys:(NSArray<NSString *> *)keys;
- (void)setValuesForKeysWithDictionary:(NSDictionary<NSString *, id> *)keyedValues;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值