kvc简单介绍
来源:互联网 发布:Linux开机自启tomcat 编辑:程序博客网 时间:2024/05/17 18:02
kvc的基本概念:键值编码是一个用于间接访问对象属性的机制,使用这个机制不用调用存取方法和变量实例,就可以访问对象的属性。
键值编码方法在OC非正式协议NSKEYVALUECoding中声明,默认的实现方法有NSObject提供。
键值编码支持有对象值的属性,同时也支持带有纯数据类型和结构,非对参数和返回类型会被识别并自动封装。
kvc的基本用法
1.设置和访问
键值编码包括setValue:forkey 和valueForKey这两个基本用法,首先看这个对象有没有setter和getter方法,如果不存在
,它将在内部查找名为_key或者key的实例变量。通过kvc可以获取不存在getter方法的对象的属性值和设置不存在setter方法的对象的属性值。在使用setValue:forkey 和valueForKey方法的时候要注意要对对象的基本数据类型如(int 、float、 bool、char)进行装箱封装。
Deveice *mac =[[Deveice alloc]init]; [mac setValue:@"macbook" forKey:@"name"]; [mac setValue:@8000 forKey:@"price"];
NSString *name =[mac valueForKey:@"name"]; NSLog(@"==%@",name);
2.路径
键值编码还可以支持制定路径,用.隔开
NSNumber *number = [ps valueForKeyPath:@"deceiveArray.@sum.price"]; NSLog(@"%@",number);3.一对多的关系
向数组请求一个键值,它会遍历这个数组中的每一个对象来查找这个键值,然后将查询到的结果存放到另一个数组返回给你;
person *ps =[[person alloc]init];Deveice *mac =[[Deveice alloc]init]; [mac setValue:@"macbook" forKey:@"name"]; [mac setValue:@8000 forKey:@"price"]; NSString *name =[mac valueForKey:@"name"]; NSLog(@"==%@",name); Deveice *iPhone =[[Deveice alloc]init]; [iPhone setValue:@"iphone" forKey:@"name"]; [iPhone setValue:@5000 forKey:@"price"]; Deveice *iPad =[[Deveice alloc]init]; [iPad setValue:@"ipad" forKey:@"name"]; [iPad setValue:@3800 forKey:@"price"]; NSArray *nameArray =@[mac,iPhone,iPad]; [ps setValue:@"jobs" forKeyPath:@"name"]; [ps setValue:nameArray forKey:@"deceiveArray"]; NSNumber *number = [ps valueForKeyPath:@"deceiveArray.@sum.price"]; NSLog(@"%@",number); NSLog(@"%@",[ps valueForKey:@"name"]);kvc的简单运算
如 count,min,max,avg,sum
语法格式要在做这些运算前加上@,比如@sum,@min
NSNumber *number = [ps valueForKeyPath:@"deceiveArray.@sum.price"]; NSLog(@"%@",number);
0 0
- kvc简单介绍
- KVC简单介绍
- Kvc简单介绍
- KVO/KVC简单的介绍
- KVO/KVC做了简单的介绍
- UI基础第十弹:Kvc简单介绍
- iOS中KVC 和 KVO 简单介绍
- IOS开发之kvc简单介绍
- iOS KVC 和 KVO 简单介绍
- OC-简单介绍KVC和简单的使用!
- KVO/KVC做了简单的介绍(转)
- KVO/KVC做了简单的介绍(转)
- ios开发UI篇—Kvc简单介绍
- iOS开发UI基础—12Kvc简单介绍
- KVC简单介绍 -字典转模型,模型转字典
- ios开发UI篇—Kvc简单介绍
- 爬爬爬之路:OC语言(八) 属性 KVC简单介绍
- iOS 基础篇5—KVC简单介绍
- JQuery实现select互换数据和上下移动
- 关于opencv摄像头图像显示 经常出现select timeout的问题
- ubantu软件源更新的问题
- Linux内核调试之使用BUG_ON 和dump_stack
- 关于CCproxy的二级代理设置
- kvc简单介绍
- docker科普
- 共享打印机无法保存和应用的解决办法
- IOS中截取当前屏幕,并保存图片
- 海水淡化膜:世韩8040海水淡化膜产品说明
- mfc 按钮 实现多个界面跳转
- 黑马程序员--【强哥笔记】系列之Java高新技术笔记之类加载器(第7天)
- web富文本编辑器简介
- ios UITableView 获取点击cell对象