KVC(一)KVC的基本使用

KVC(Key-value coding)键值编码,从字面意思来看,就是可以通过对象的key名进行访问,达到存取值的目的,这里的key名包含属性名、公有成员变量、私有成员变量和对象属性的属性。可以在运行时动态的修改属性的值,特别是当我们使用第三方库,但是对方又没有将我们想要修改的属性暴露出来时,使用KVC来实现就比较简单了。下面我们一起来看一下KVC的基本使用。

在Object-C和Swift中,KVC都是通过NSObject的扩展来实现,也就是说所有继承自NSObject的实例对象都可以使用KVC。首先看我们最常用的赋值、取值API:

- (void)setValue:(nullableid)valueforKey:(NSString*)key;    //赋值操作,通过key名直接赋值

-(nullable id)valueForKey:(NSString*)key;                           //取值操作,对应上面的赋值

-(void)setValue:(nullable id)value forKeyPath:(NSString*)keyPath;//赋值操作,通过KeyPath来设值,形式类似a.b.c

-(nullable id)valueForKeyPath:(NSString*)keyPath;          //取值操作,对应setValueForKeyPath。

下面我们来看一个简单地例子:

然后我们分别使用上面介绍的四个API来进行赋值和取值操作:

结果如下:

很明显,我们使用KVC分别对属性、私有成员变量、公共成员变量和对象的属性进行赋值,并取出,形成闭环。这就是KVC的基本使用情况。

细心的朋友可能已经发现,我们生命的成员变量是_height和_weight,但是我们在进行赋值操作时,key名为“height”和“weight”,也能赋值成功,这是为什么呢?下篇文章我们仔细分析KVC的内部实现逻辑。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • KVC(Key-value coding)键值编码,单看这个名字可能不太好理解。其实翻译一下就很简单了,就是指iO...
    我的梦工厂阅读 4,344评论 1 8
  • KVC(Key-valuecoding)键值编码,单看这个名字可能不太好理解。其实翻译一下就很简单了,就是指iOS...
    榕樹頭阅读 3,991评论 0 2
  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 13,796评论 1 32
  • KVC(Key-value coding)键值编码,iOS的开发中,可以允许开发者通过Key名直接访问对象的属性,...
    CALayer_Sai阅读 7,300评论 0 4
  • 大家好!欢迎来到《亿谋商道》,我是金亿谋! 好多粉丝给我发信息,说自己现在很迷茫,不知道该做什么,也不知道未来的路...
    晓丹成长说阅读 9,258评论 0 4