您的位置:首页 > 产品设计 > UI/UE

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"]);

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐