KVC是Key Value Coding的缩写,意思是键值编码。在iOS中,提供了一种方法通过使用属性的名称(也就是Key)来间接访问对象的属性方法。说的有的拗口,实际上就是通过类定义我们可以看到类的各种属性,那么使用属性的名称我们就能访问到类实例化后的对象的这个属性值。
这个方法可以不通过getter/setter方法来访问对象的属性。因为一个类的成员变量如果没有提供getter/setter的话,外界就失去了对这个变量的访问渠道。而KVC则提供了一种访问的方法,这个在某些场合会很有威力。
不多说了,上代码:
- @interface myPerson : NSObject
- {
- NSString *_name;
- int _age;
- int _height;
- int _weight;
- }
- @end
- @interface testViewController : UIViewController
- @property (nonatomic, retain) myPerson *testPerson;
- @end
- - (void)testKVC
- {
- testPerson = [[myPerson alloc] init];
- NSLog(@"testPerson's init height = %@", [testPerson valueForKey:@"height"]);
- [testPerson setValue:[NSNumber numberWithInt:168] forKey:@"height"];
- NSLog(@"testPerson's height = %@", [testPerson valueForKey:@"height"]);
- }
第一段代码是定义了一个myPerson的类,这个类有一个_height的属性,但是没有提供任何getter/setter的访问方法。同时在testViewController这个类里面有一个myPerson的对象指针。
当myPerson实例化后,常规来说是无法访问这个对象的_height属性的,不过通过KVC我们做到了,代码就是testKVC这个函数。
运行之后打印值就是:
2013-11-02 11:16:21.970 test[408:c07] testPerson's init height = 0
2013-11-02 11:16:21.971 test[408:c07] testPerson's height = 168
这就说明确实读写了_height属性。
KVC的常用方法:
- - (id)valueForKey:(NSString *)key;
- - (void)setValue:(id)value forKey:(NSString *)key;
valueForKey的方法根据key的值读取对象的属性,setValue:forKey:是根据key的值来写对象的属性。
这里有几个要强调一下
1. key的值必须正确,如果拼写错误,会出现异常
2. 当key的值是没有定义的,valueForUndefinedKey:这个方法会被调用,如果你自己写了这个方法,key的值出错就会调用到这里来
3. 因为类key反复嵌套,所以有个keyPath的概念,keyPath就是用.号来把一个一个key链接起来,这样就可以根据这个路径访问下去
4. NSArray/NSSet等都支持KVC
相关推荐
iOS KVC实现原理,供参考学习。适合有一定基础的。自己研究的,不喜勿喷。
KVC(Key-Value Coding)是Objective-C中最强大最实用的功能之一。 通过例子可以帮你更好的理解它们。
使用kvc 可以轻松获取一个类的成员变量的值,也可以轻松获取数组中成员变量的zhi,
已经拥有一年经验的你真的了解KVC,KVO吗?也许不!以前我以为自己都有上架项目,这都是太基础的东西,但今天我重新回头看了以前做的笔记,真的是书读百遍,其义自见。
键值编码允许开发者通过名字访问对象属性,而无需调用明确的存取方法。这是一个非常简单的例子,适合新手下载学习。
关于ios学习中的通知和kvc,kvo案例的整理,基础的oc学习
本demo讲解了KVC的原理和实现,包括定义,执行过程,异常处理,注意事项等
使用KVC对属性赋值 使用KVC对属性取值 KVC对数组取值 KVO是key value observing, 它是一种非常重要的机制,允许监听属性值的变化
主要介绍了IOS 中KVC的使用方法实例详解的相关资料,这提供具体使用方法,希望能帮助到大家,需要的朋友可以参考下
KVO,即:Key-Value Observing,它提供一种机制,当指定的对象的属性被修改后,则对象就会接受到通知。这是一个简单的kvodemo,帮助初学者理解。
iOS中KVC-KVO例子,
KVC技术指南 ---ios官方
在ios 13之前,UITextField可以通过KVC修改属性 //字体颜色 [textField setValue:[UIColor whiteColor]forKeyPath:@_placeholderLabel.textColor]; //字体大小 [textField setValue:[UIFont boldSystemFontOfSize:...
完整地实现了iOS自定义KVC的流程和步骤,并备注详细的说明和解释,方便阅读和理解!
英文文档 iso kvo kvc "mvc with less code".
但需要注意的是,键值观察(KVO)是建立在键值编码(Key Value Coding,简称KVC)的基础上,也就是说任何你想使用KVO观察的属性必须符合键值编码。 这个demo主要以字符串、数组为例来学习键值编码和键值观察。 ...
KVC && Runtime,修改textField placeholder颜色
KVC全称是Key Value Coding(键值编码),是一个基于NSKeyValueCoding非正式协议实现的机制,它可以直接通过key值对对象的属性进行存取操作,而不需通过调用明确的存取方法。这样就可以在运行时动态在访问和修改对象...
ios 数据请求框架 图片请求框架 刷新框架 kvc框架,进度条框架
KVC_KVOTest Demo代码 KVC KVO IOS 观察者 Observe