面试题答案
一键面试假设 Person
类定义如下:
#import <Foundation/Foundation.h>
@interface Person : NSObject
@property (nonatomic, strong) NSNumber *age;
@end
@implementation Person
@end
在调用处可以这样使用KVC求平均年龄:
#import <Foundation/Foundation.h>
#import "Person.h"
int main(int argc, const char * argv[]) {
@autoreleasepool {
Person *person1 = [[Person alloc] init];
person1.age = @20;
Person *person2 = [[Person alloc] init];
person2.age = @25;
Person *person3 = [[Person alloc] init];
person3.age = @30;
NSArray *persons = @[person1, person2, person3];
NSNumber *averageAge = [persons valueForKeyPath:@"@avg.age"];
NSLog(@"平均年龄: %@", averageAge);
}
return 0;
}
在上述代码中,通过 @avg
操作符结合 valueForKeyPath:
方法使用KVC求出了数组中所有 Person
对象的平均年龄。首先创建了几个 Person
对象并添加到数组中,然后使用 @avg.age
这种KVC路径表达式来计算平均年龄,并将结果打印出来。