KVC数组计算

主要是复合路径的使用

Author.h

#import


@interface Author : NSObject{

    NSString *_name;

    

    NSArray *_issueBook;

}


@end


Author.m

#import "Author.h"


@implementation Author


@end


Book.h

#import

#import "Author.h"


@interface Book : NSObject{

    Author *author;

}


@property (nonatomic,copy) NSString *name;


@property (nonatomic,assign) double price;


@end


Book.m

#import "Book.h"


@implementation Book


@end


main.m(代码测试)

Author *author = [[Author alloc] init];

    

    [author setValue:@"莫言" forKey:@"name"];

    

    Book *book1 = [[Book alloc] init];

    book1.name = @"红高粱";

    book1.price = 10.8;

    

    Book *book2 = [[Book alloc] init];

    book2.name = @"";

    book2.price = 20.8;

    

    NSArray *array = [NSArray arrayWithObjects:book1,book2, nil];

    

    [author setValue:array forKeyPath:@"_issueBook"];

    //以数组的形式返回对象中的数组所包行的对象中的所有price属性值

    NSArray *priceArray = [author valueForKeyPath:@"_issueBook.price"];

    

    NSLog(@"priceArray = %@",priceArray);

    //计算对象中数组的长度

    NSNumber *count = [author valueForKeyPath:@"_issueBook.@count"];

    

    NSLog(@"count = %@",count);

    //计算对象中数组所包含的对象中所有price的总和,下面的就不一一介绍大同小异

    NSNumber *sum = [author valueForKeyPath:@"[email protected]"];

    

    NSLog(@"sum = %@",sum);

    

    NSNumber *avg = [author valueForKeyPath:@"[email protected]"];

    

    NSLog(@"avg = %@",avg);

    

    NSNumber *max = [author valueForKeyPath:@"[email protected]"];

    

    NSNumber *min = [author valueForKeyPath:@"[email protected]"];

    

    NSLog(@"max = %@",max);

    

    NSLog(@"min = %@",min);


上面的三中操作都不需要循环操作,第一种是取出指定属性的全部值,第二个是指定属性的数量,第三个是属性值的计算

第一种格式:@"对象中数组属性.数组对象中的属性”这样会返回对象中的数组的某个属性的全部值";

第二种格式:@"对象中数组属性.@count"; //@count本人自己理解是方法,没有@是属性,使用点进行连接

第三种格式:@"对象中数组属性.@xxx(计算函数).计算函数要操作的属性(数组中包含的对象属性)";

你可能感兴趣的:(KVC数组计算)