面试题答案
一键面试KVC常见基本使用场景
- 访问对象属性:当无法直接访问对象的某些属性时(例如属性为私有属性),可以通过KVC来访问。
- 集合操作:对集合中的对象进行批量操作,如对数组中所有对象的某个属性进行统一修改。
- 数据验证:可以通过KVC对对象属性值进行验证,在值发生变化时进行相应处理。
代码实现简单KVC操作示例
假设有一个类 Person
,包含属性 name
和 age
。
#import <Foundation/Foundation.h>
@interface Person : NSObject
@property (nonatomic, strong) NSString *name;
@property (nonatomic, assign) NSInteger age;
@end
@implementation Person
@end
int main(int argc, const char * argv[]) {
@autoreleasepool {
Person *person = [[Person alloc] init];
person.name = @"John";
person.age = 30;
// 通过KVC访问属性
id nameValue = [person valueForKey:@"name"];
NSLog(@"Name: %@", nameValue);
id ageValue = [person valueForKey:@"age"];
NSLog(@"Age: %@", ageValue);
// 通过KVC设置属性
[person setValue:@"Jane" forKey:@"name"];
[person setValue:@35 forKey:@"age"];
nameValue = [person valueForKey:@"name"];
ageValue = [person valueForKey:@"age"];
NSLog(@"New Name: %@", nameValue);
NSLog(@"New Age: %@", ageValue);
}
return 0;
}
在上述代码中,首先创建了 Person
类的实例,并通过 valueForKey:
方法获取对象的属性值,通过 setValue:forKey:
方法设置对象的属性值,展示了简单的KVC操作。