IOS开发-KVC
1. 什么是kvc
kvc--key-value coding,健值编码
可以通过key直接访问对象属性的value的方法
2.使用场景
kvc主要是为了让代码变的更简介明了
用的比较多的是在后台数据解析,还有访问一些没有setter,getter方法的属性
3.代码解析:
定义都在NSKeyValueCoding.h中
主要两个方法:
//key为当前类的属性名 - (id)valueForKey:(NSString *)key; //当类没有名为key的属性时会调用抛出异常,可以复写valueForUndefinedKey:方法,作处理 - (void)setValue:(id)value forKey:(NSString *)key;//当类没有名为key的属性时会调用抛出异常,可以复写- (void)setValue:(id)value forUndefinedKey:(NSString *)key:方法,作处理 //keyPath 为访问属性的路径,比如:@"person.name",person是当前类的属性,name是person类的一个属性名 - (id)valueForKeyPath:(NSString *)keyPath; - (void)setValue:(NSValue *)value forKeyPath:(NSString *)keyPath;
异常处理
- (id)valueForUndefinedKey:(NSString *)key; - (void)setValue:(id)value forUndefinedKey:(NSString *)key
代码举例:
@interface ViewController () @property (nonatomic, weak) NSString *viewString; @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; NSLog(@"----[%@]",[self valueForKey:@"viewString"]); NSLog(@"----[%@]",[self valueForKey:@"viewArray"]); [self setValue:@"testForViewString" forKey:@"viewString"]; [self setValue:@"1" forKey:@"viewArray"]; } - (void)setValue:(id)value forUndefinedKey:(NSString *)key { NSLog(@"【warning】!!!!!!---Undefined--key[%@]--!!!!!!",key); } - (id)valueForUndefinedKey:(NSString *)key { if ([key isEqualToString:@"viewArray"]) { return @"aaaa"; } else { return [super valueForUndefinedKey:key]; } }
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步