kvc简单介绍

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);








评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值