KVC不仅能够引用对象,还能对集合和数组进行一些运算,主要有:
运算符 | 功能 |
---|---|
@count | 计算数组元素个数 |
@sum | 计算元素总和 |
@avg | 计算元素平均值 |
@min | 计算元素最小值 |
@max | 计算元素最大值 |
接下来,我们就使用KVC中的运算符进行一些运算
…
1.先创建两个类Book和Student:
Book.h的代码文件如下:
#import <Foundation/Foundation.h>
@interface Book : NSObject
@property (nonatomic,copy) NSString *bookName;
@property (nonatomic,assign) CGFloat price; //书本价格
@end
Book.m的代码文件如下:
#import <Foundation/Foundation.h>
#import "Book.h"
@implementation Book
@end
Student.h的文件代码如下:
#import <Foundation/Foundation.h>
@class Book;
@interface Student : NSObject
@property (nonatomic,strong) NSArray *books;
@end
Student.m的文件代码如下:
#import "Student.h"
@implementation Student
@end
2.main.m文件中运用KVC的运算
main.m的文件代码如下:
#import <Foundation/Foundation.h>
#import "Student.h"
#import "Book.h"
int main(int argc, const char * argv[]) {
@autoreleasepool {
//实例化4本书
Book *book1 = [[Book alloc] init];
book1.bookName = @"红楼梦";
book1.price = 45.5;
Book *book2 = [[Book alloc] init];
book2.bookName = @"西游记";
book2.price = 55.5;
Book *book3 = [[Book alloc] init];
book3.bookName = @"三国演义";
book3.price = 75.5;
Book *book4 = [[Book alloc] init];
book4.bookName = @"水浒传";
book4.price = 35.5;
//定义一个数组
NSArray *array = [NSArray arrayWithObjects:book1,book2,book3,book4,nil];
//实例化一个学生
Student *stu = [[Student alloc] init];
stu.books = array;
//输出
NSLog(@"count = %@",[stu valueForKeyPath:@"books.@count"]);
NSLog(@"price.avg = %@",[stu valueForKeyPath:@"books.@avg.price"]);
NSLog(@"price.min = %@",[stu valueForKeyPath:@"books.@min.price"]);
NSLog(@"price.max = %@",[stu valueForKeyPath:@"books.@max.price"]);
NSLog(@"price.sum = %@",[stu valueForKeyPath:@"books.@sum.price"]);
}
return 0;
}
测试结果如下:
2015-08-08 11:09:15.962 Demo[502:17935] count = 4
2015-08-08 11:09:15.984 Demo[502:17935] price.avg = 53
2015-08-08 11:09:15.985 Demo[502:17935] price.min = 35.5
2015-08-08 11:09:15.985 Demo[502:17935] price.max = 75.5
2015-08-08 11:09:15.986 Demo[502:17935] price.sum = 212
好了,KVC的运算就到此为止了!