申明:此为本人学习笔记,若有纰漏错误之处的可留言共同探讨
/*
思路
通过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;
}