MST

星途 面试题库

面试题:Objective-C的KVC在集合操作中的应用

有一个NSArray,数组中的元素都是Person类的实例,Person类有age属性(NSNumber类型)。请使用KVC求出数组中所有Person的平均年龄,并写出完整代码实现。
44.6万 热度难度
编程语言Objective-C

知识考点

AI 面试

面试题答案

一键面试

假设 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路径表达式来计算平均年龄,并将结果打印出来。