[iOS]KVC--键值编码的方式赋值取值

KVC
除了常用的set/get方法取值赋值之外,还可以使用键值编码的方式赋值取值
(说直接点,就是一个类,可以直接通过setValueForKey的方式赋值和取值)
iOS中我们每次声明一个成员变量,一般使用@property的方式,该方式默认存在set和get方法,但除此之外,我们使用如下方法亦可:

类PoClass,有个成员变量name

@class Course;
@interface PoClass : NSObject
{
    NSString *name;
}
@end

如果name没有@property

PoClass *po = [[PoClass alloc]init]

[po setValue:@"polen" forKey:@"name"];
NSString *getName = [po valueForKey:@"name"]

[po setValue:@"polenPath" forKeyPath:@"course.name"];
NSString *getName  = [po valueForKeyPath:@"course.name"];

key的方式和path的方式,可以理解为对setter和getter方式的补充。
如果有setter/getter方法,则优先会调用setter/getter方法,没有则通过查看_key或者key的value.

参照推酷:

首先去检查是否存在setter,getter方法,如果不存在,它将在内部查找名_key或key的实例变量。如果
还是没有那就会报错误。通过KVC 可以获取不存在getter方法的对象值,无需通过对象指针直接访问。
【注意】:当我们通过setValue:forKey:设置对象的值,或者valueForKey:来获取对象的值时,如果对象的实例变量为基本数据类型时(例如:char,int,float,BOOL),我们需要对这些数据类型进行封装。

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

推荐阅读更多精彩内容