KeyValueCoding(键值编码)
2015-03-25 20:05
239 查看
-(void)btnClick:(UIButton *)btn{
if (btn.tag == 100) {
//修改Teacher的变量
}
else{
//修改Student的变量
[_sm setValue:@"xiaoxin" forKey:@"name"];
}
}
//给成员变量赋值
-(void)setValues{
_sm = [[StudentModel alloc]init];
_tm = [[TeacherModel alloc]init];
//1.通过点语法给对象的变量赋值
_sm.name = @"xiaoming";
//通过点语法获取对象的变量的值
NSLog(@"student name = %@",_sm.name);
//2.使用KVC的方式给对象的变量赋值
//KVC:键值编码。是一种可以通过字符串(key)直接访问对象的变量的机制。
[_sm setValue:@"xiaobai" forKey:@"name"];
//使用KVC方式获取对象的变量的值
NSLog(@"_sm.name = %@",[_sm valueForKey:@"name"]);
//KVO:键值观察。当被观察的对象的属性发生改变时,会通知观察者。
//要观察哪个对象,哪个对象添加观察者。
/*
第一个参数:观察者 --> self
第二个参数:要观察的对象的属性
第三个参数:要观察的对象的属性的几种变化方式 --> 新旧值观察
第四个参数:nil
*/
[_sm addObserver:self forKeyPath:@"name" options:NSKeyValueObservingOptionNew | NSKeyValueObservingOptionOld context:nil];
}
//当被观察的对象的属性发生改变时,会通知观察者。调用该方法。
/*
第一个参数:被观察的对象的属性
第二个参数:被观察的对象
第三个参数:属性的改变 --> 属性的新旧值
*/
-(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context{
if ([object isKindOfClass:[StudentModel class]]) {
NSLog(@"old:%@",[change objectForKey:@"old"]);
NSLog(@"new:%@",[change objectForKey:@"new"]);
}
}
if (btn.tag == 100) {
//修改Teacher的变量
}
else{
//修改Student的变量
[_sm setValue:@"xiaoxin" forKey:@"name"];
}
}
//给成员变量赋值
-(void)setValues{
_sm = [[StudentModel alloc]init];
_tm = [[TeacherModel alloc]init];
//1.通过点语法给对象的变量赋值
_sm.name = @"xiaoming";
//通过点语法获取对象的变量的值
NSLog(@"student name = %@",_sm.name);
//2.使用KVC的方式给对象的变量赋值
//KVC:键值编码。是一种可以通过字符串(key)直接访问对象的变量的机制。
[_sm setValue:@"xiaobai" forKey:@"name"];
//使用KVC方式获取对象的变量的值
NSLog(@"_sm.name = %@",[_sm valueForKey:@"name"]);
//KVO:键值观察。当被观察的对象的属性发生改变时,会通知观察者。
//要观察哪个对象,哪个对象添加观察者。
/*
第一个参数:观察者 --> self
第二个参数:要观察的对象的属性
第三个参数:要观察的对象的属性的几种变化方式 --> 新旧值观察
第四个参数:nil
*/
[_sm addObserver:self forKeyPath:@"name" options:NSKeyValueObservingOptionNew | NSKeyValueObservingOptionOld context:nil];
}
//当被观察的对象的属性发生改变时,会通知观察者。调用该方法。
/*
第一个参数:被观察的对象的属性
第二个参数:被观察的对象
第三个参数:属性的改变 --> 属性的新旧值
*/
-(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context{
if ([object isKindOfClass:[StudentModel class]]) {
NSLog(@"old:%@",[change objectForKey:@"old"]);
NSLog(@"new:%@",[change objectForKey:@"new"]);
}
}
相关文章推荐
- 键值编码 Key-Value Coding Programming Guide---2
- 键值编码 Key-Value Coding Programming Guide
- xcode KVC:Key Value Coding 键值编码
- KVO(NSKeyValueObserving 键 - 值编码)与KVC(NSKeyValueCoding 键值观察机制)详解
- KVO(NSKeyValueObserving 键 - 值编码)与KVC(NSKeyValueCoding 键值观察机制)详解
- Objective-C ---强大的KVC(key valued coding 键值编码) 详解
- xib自定义UIView报错误 "forUndefinedKey:]: this class is not key value coding-compliant for the key"
- iOS Xcode 6报错:setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key v
- iOS [<NSObject 0x170204110> setValue:forUndefineKey:]: this class is not key value coding-compliant
- this class is not key value coding-compliant for the key digitPressed 解决办法
- this class is not key value coding-compliant for the key buttonPressed.' 错误解决方式
- this class is not key value coding-compliant for the key xxxxxx
- iOS: setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key name.
- setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key
- "this class is not key value coding-compliant for the key ..."问题的解决
- this class is not key value coding-compliant for the key xxxxx.
- this class is not key value coding-compliant for the key digitPressed.
- Java中Map根据键值(key)或者值(value)进行排序实现
- kvc和字典在创建键值对时的相同与区别(setValue forKey )(setObject forKey)
- xib自定义UIView报错误 "forUndefinedKey:]: this class is not key value coding-compliant for the key"