iOS笔记—KVC

申明:此为本人学习笔记,若有纰漏错误之处的可留言共同探讨

/*

思路

通过KVC设置属性 setValue ... forKey...

取值  valueForKeyPath...


*/

KVC 全称 key value coding  (键值编码),如果不能用点方法(setter、getter)方法设置属性,可以用kvc设置

//
//  ViewController.m
//  KVC
//
//  Created by hhg on 15/9/28.
//  Copyright (c) 2015年 hhg. All rights reserved.
//

#import <Foundation/Foundation.h>

@interface Author : NSObject {
    
    NSString* name;
    
    NSArray * isbook;
    
}
@end


@interface Book : NSObject {
    
    Author *author;
    
    float price;
    
}
@end

int main(int argc, const char * argv[]) {
    
    @autoreleasepool {
        
        Book*book =[[Book alloc]init];
        Author *author =[[Author alloc]init];
        
        //1 通过KVC设置属性
        [book setValue:author forKey:@"author"];
        
        //2 通过键值路径设置属性
        [book setValue:@"金庸" forKeyPath:@"author.name"];
        
        //3:等价于2
        [author setValue:@"金庸" forKey:@"name"];
        
        NSLog(@"author1 = %@",[author valueForKey:@"name"]);
        NSLog(@"author2 = %@",[book valueForKeyPath:@"author.name"]);
        
        //计算属性的 sum avg min max count
        Book *book1 =[[Book alloc]init];
        
        Book *book2 =[[Book alloc]init];
        
        Book *book3 =[[Book alloc]init];
        
        Book *book4 =[[Book alloc]init];
        
        
        
        [book1 setValue:@100 forKey:@"price"];
        
        [book2 setValue:@200 forKey:@"price"];
        
        [book3 setValue:@300 forKey:@"price"];
        
        [book4 setValue:@400 forKey:@"price"];
        
        
        //KVC设置数组属性值
        NSArray *array =[[NSArray alloc]initWithObjects:book1,book2,book3,book4, nil];
        [author setValue:array forKey:@"isbook"];
        
        //通过KVC key获得数组属性值
        NSArray *priceArr =[author valueForKeyPath:@"isbook.price"];
        
        NSLog(@"%@",priceArr);
        
        
        //计算总和
        
        NSNumber *number =[author valueForKeyPath:@"isbook.@sum.price"];
        
        NSLog(@"sum == %@",number);
        
        //计算平均
        NSNumber *number1 =[author valueForKeyPath:@"isbook.@avg.price"];
        
        NSLog(@"avg == %@",number1);
        
        //最大值
        NSNumber *number2 =[author valueForKeyPath:@"isbook.@max.price"];
        
        NSLog(@"max ====%@",number2);
        
        //总数
        NSNumber *number3 =[author valueForKeyPath:@"isbook.@count"];
        
        NSLog(@"count ====%@",number3);
        
    }
    
    return 0;
    
}





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值