KeyValueCoding(键值编码)

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

    }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值