1.setValue: forKey:
将person对象中的name属性作为Key值,并将这个Key对应的value设为张三,建立一个键值对
//方法声明:
- (void)setValue:(id)value
forKey:(NSString *)key
//参数说明:
//由Key标识的属性的值
value:The value for the property identified by key.
key:The name of one of the receiver's properties.
//将person对象中的name属性作为Key值,并将这个Key对应的value设为张三,建立一个键值对
[person setValue:@"张三" forKey:@"name"];
2.valueForKey:
返回调用该方法对象属性的value
//方法声明:
- (id)valueForKey:(NSString *)key
//返回值说明:
//返回调用该方法对象属性的值
NSLog(@"%@", [person valueForKey:@"name"]);
3.setValuesAndKeysForDictionary:
字典中的Key为对象的属性名,value为将要赋的值,组成键值对,并为对象属性赋值
//方法声明:
- (void)setValuesForKeysWithDictionary:(NSDictionary *)keyedValues
//参数说明:
keyedValues:字典识别用Key标识的属性,通过Key找到相应的属性并将属性赋值
NSDictionary *dictionary = @{@"name" : @"ZSY", @"gender" : @"man", @"age" : @"18", @"hobby" : @"play"};
//在person对象中,通过字典中的Key对应属性名字,将Key对应的属性值赋值为value
[person setValuesForKeysWithDictionary:dictionary];
//注意:如果字典中的Key值多于对象中的属性时,需要重写下面的方法,保证系统正确运行,否则程序crash
- (void)setValue:(id)value forUndefinedKey:(NSString *)key {
}
4.setValue: forKeyPath:
通过路径将属性名(Key)对应值(value)组成键值对,并对属性赋值操作
//方法的声明:
- (void)setValue:(id)value
forKeyPath:(NSString *)keyPath
//参数说明:
keyPath:要使用Key标记的属性的路径
//Person.h中声明一个Cup对象的属性
@property (nonatomic, retain) Cup *cup;
//Person.m中实现对Cup对象的指定初始化方法
- (instancetype)initWithCup:(Cup *)cup {
self = [super init];
if (self) {
_cup = cup;
}
return self;
}
//Cup.h中声明属性capacity
@property (nonatomic, assign) NSInteger capacity;
//1.实例化Cup对象
Cup *cup = [[Cup alloc] init];
//2.实例化Person对象并且使用初始化方法,为cup属性初始化
Person *person2 = [[Person alloc] initWithCup:cup];
//3.将person对象的cup属性中的capacity属性value值设置为550
[person2 setValue:@550 forKeyPath:@"cup.capacity"];
//4.输出capacity
NSLog(@"%lu", person2.cup.capacity);