iOS开发中的KVC与KVO

一、KVC

KVC(Key Value Coding):键值编码

1.赋值
  • 对一个对象调用setValue:forKey:方法,给对象的属性赋值。通过KVC进行赋值可以进行自动类型转换

  • 对一个对象调用setValue:forKeyPath:方法,通过内部的点语法传可以层层访问内部的属性,给对象的属性的属性赋值。

  • 通过KVC赋值可以修改类的私有成员变量


2.利用KVC进行字典转模型
  • 对模型对象调用setValuesForKeysWithDictionary:方法可以直接将字典转为模型。单通常不建议使用该方法,仅在简单的字典转模型时使用。因为:
  • 字典中的所有key必须都能在模型的属性中找到,如果有找不到的就会报错。
  • 如果模型中带有模型,则赋值后的类型不一致。


3.取值
  • 对一个对象调用valueForKey:valueForKeyPath:方法获取一个对象的某属性
  • 对一个包含多个同类型对象的数组中调用valueForKeyPath:方法,可以获取数组中所有对象的对应属性值。返回一个数组。


4.利用KVC进行模型转字典
  • 对模型对象调用dictionaryWithValuesForKeys:方法,传入一个key名数组,即可生成一个字典



二、KVO

KVO(Key Value Observing):键值监听
当某个对象的属性值发生改变时,用KVO监听该变化

  1. 绑定监听
    对一个对象调用addObserver:forKeyPath:options:context:方法,给对象绑定一个监听器(观察者)
  2. 移除监听
    调用removeObserver:forKeyPath:方法,移除监听
  3. 处理监听
    重写observeValueForKeyPath:ofObject:change:context:方法

你可能感兴趣的:(iOS开发中的KVC与KVO)