kvc简单介绍
2014-08-19 09:29
447 查看
kvc的基本概念:键值编码是一个用于间接访问对象属性的机制,使用这个机制不用调用存取方法和变量实例,就可以访问对象的属性。
键值编码方法在OC非正式协议NSKEYVALUECoding中声明,默认的实现方法有NSObject提供。
键值编码支持有对象值的属性,同时也支持带有纯数据类型和结构,非对参数和返回类型会被识别并自动封装。
kvc的基本用法
1.设置和访问
键值编码包括setValue:forkey 和valueForKey这两个基本用法,首先看这个对象有没有setter和getter方法,如果不存在
,它将在内部查找名为_key或者key的实例变量。通过kvc可以获取不存在getter方法的对象的属性值和设置不存在setter方法的对象的属性值。在使用setValue:forkey 和valueForKey方法的时候要注意要对对象的基本数据类型如(int 、float、 bool、char)进行装箱封装。
2.路径
键值编码还可以支持制定路径,用.隔开
向数组请求一个键值,它会遍历这个数组中的每一个对象来查找这个键值,然后将查询到的结果存放到另一个数组返回给你;
kvc的简单运算
如 count,min,max,avg,sum
语法格式要在做这些运算前加上@,比如@sum,@min
键值编码方法在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);
相关文章推荐
- KVO/KVC做了简单的介绍
- ios开发UI篇—Kvc简单介绍
- iOS监听模式系列之键值编码KVC、键值监听KVO的简单介绍和应用
- KVO/KVC做了简单的介绍(转)
- iOS 基础篇5—KVC简单介绍
- ios开发UI篇—Kvc简单介绍
- ios开发UI篇—KVC简单介绍
- ios开发UI篇—Kvc简单介绍
- OC-简单介绍KVC和简单的使用!
- iOS监听模式系列之键值编码KVC、键值监听KVO的简单介绍和应用
- IOS开发之kvc简单介绍
- iOS开发UI篇—Kvc简单介绍
- iOS中KVC 和 KVO 简单介绍
- KVC简单介绍 -字典转模型,模型转字典
- Kvc简单介绍
- 爬爬爬之路:OC语言(八) 属性 KVC简单介绍
- ios开发UI篇—Kvc简单介绍
- UI基础第十弹:Kvc简单介绍
- ios开发UI篇—Kvc简单介绍
- KVO/KVC做了简单的介绍(转)