主要是复合路径的使用
Author.h
#import <Foundation/Foundation.h>
@interface Author : NSObject{
NSString *_name;
NSArray *_issueBook;
}
@end
Author.m
#import "Author.h"
@implementation Author
@end
Book.h
#import <Foundation/Foundation.h>
#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
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:@"_issueBook.@sum.price"];
NSLog(@"sum = %@",sum);
NSNumber *avg = [author valueForKeyPath:@"_issueBook.@avg.price"];
NSLog(@"avg = %@",avg);
NSNumber *max = [author valueForKeyPath:@"_issueBook.@max.price"];
NSNumber *min = [author valueForKeyPath:@"_issueBook.@min.price"];
NSLog(@"max = %@",max);
NSLog(@"min = %@",min);
上面的三中操作都不需要循环操作,第一种是取出指定属性的全部值,第二个是指定属性的数量,第三个是属性值的计算
第一种格式:@"对象中数组属性.数组对象中的属性”这样会返回对象中的数组的某个属性的全部值";
第二种格式:@"对象中数组属性.@count"; //@count本人自己理解是方法,没有@是属性,使用点进行连接
第三种格式:@"对象中数组属性.@xxx(计算函数).计算函数要操作的属性(数组中包含的对象属性)";