美文网首页iOS 底层原理探究
KVC(一)KVC的基本使用

KVC(一)KVC的基本使用

作者: PerryMorning | 来源:发表于2019-11-12 22:39 被阅读0次

    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(一)KVC的基本使用

        本文链接:https://www.haomeiwen.com/subject/ydqcictx.html