蓝懿 iOS KVC补充及实例

vc-补充及实例">KVC 补充及实例

怎么获取值 和 修改值—–>How

 - (void)setValue:(id)value forKey:(NSString *)key
 - (id)valueForKey:(NSString *)key
 - (id)valueForKey:(NSString *)key //以 key 作为标示符,获取其对应的属性值
 - (void)setValue:(id)value forKey:(NSString *)key //以 key 作为标示符设置其对应的属性值
 - (id)valueForUndefinedKey:(NSString *)key
 - (void)setNilValueForKey:(NSString *)key
 ```

 Demo
 创建一个QYPerson 类继承于 NSObject
 QYPerson.h

 ```
 #import 

@interface QYPerson : NSObject
@property (nonatomic, strong) NSString *name;
@property (nonatomic, assign) int age;

- (void)changeName;
@end

在 QYPerson.m 文件中实现上面的方法

#import QYPerson.h

@implementation QYPerson

- (void)changeName
{
    _name = @changeName;
}
@end

创建一个 QYPersonMonitor 的类用来监视 QYPerson 中的 name 属性 在. m 文件中实现对 QYPerson 中 name 属性的监视

 #import QYPersonMonitor.h

@implementation QYPersonMonitor
// 2. 回调的方法 当观察的值改变的时候,该方法会被调用
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
{
    if ([keyPath isEqual:@name]) {
        NSLog(@change name: old :%@,   new : %@,[change objectForKey:NSKeyValueChangeOldKey],[change objectForKey:NSKeyValueChangeNewKey]);
    }
}

@end

在控制器中初始化监视的对象以及被监视的对象,注册观察者

 #import ViewController.h
#import QYPerson.h
#import QYPersonMonitor.h

@interface ViewController ()
@property (nonatomic, strong) QYPerson *person;

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];

    //初始化被监视的对象
    _person = [[QYPerson alloc] init];
    _person.name = @zhangsan;
    _person.age = 18;

    //监视对象
    QYPersonMonitor *personMonitor = [[QYPersonMonitor alloc] init];
    // 1. 注册了一个观察者
    [_person addObserver:personMonitor forKeyPath:@name options:NSKeyValueObservingOptionNew|NSKeyValueObservingOptionOld context:nil];

    //初始化的值
    NSLog(@person‘s name is %@,_person.name);

    //通过 setvalue 的方法,此时 QYPersonMonitor 的监视将被调用
    [_person setValue:@(lisi by KVC) forKey:@name];

    //打印通过 kvc 方式修改后的值
    NSLog(@person‘s name get by kvc is %@,[_person valueForKey:@name]);

    //通过.语法修改的效果和通过 setvalue 是一致的
    _person.name = @name change by .name= wangwu;
    //通过 person 自己的函数来更改 name 属性
    [_person changeName];
}

@end
时间: 2024-10-14 04:07:45

蓝懿 iOS KVC补充及实例的相关文章

iOS KVC补充及实例

KVC 补充及实例 怎么获取值 和 修改值-–>How - (void)setValue:(id)value forKey:(NSString *)key - (id)valueForKey:(NSString *)key - (id)valueForKey:(NSString *)key //以 key 作为标示符,获取其对应的属性值 - (void)setValue:(id)value forKey:(NSString *)key //以 key 作为标示符设置其对应的属性值 - (id)v

#在蓝懿iOS学习的日子#

#在蓝懿iOS学习的日子#昨天我们学习了让uiimaag,学习了如何的插入图片,学习如何让它上下左右移动,其实就是加入按钮buttonon来控制图片的方向,还学习让图片在一定的范围内来回的移动,最后还制作了一个简易的游戏,我们都称之为简易的反射器,在下方设立一个按钮,发射一个图片,打击上方左右移动的image,为胜利,并以打中一次,来进行计分,难点就是两个图片的碰撞,设立的放h是这样的: //设置luobo与tu1障碍物的碰撞 //frame是指图片的矩形,进行碰撞 if (CGRectInte

蓝懿 iOS一周学习总结

在蓝懿学习已经一周多了. 时间如流水,在期间的日子慢慢冲刷掉了我的消极和懒惰.这些天来过得非常充实而充满张力.处于老师的富有创新的讲课方式和充满虚席热情的同学包围中,时间过得飞快. 在此回顾一下这些天的学习内容和学习感受. 课程从Objective-C开始.在老师介绍完计算机编程语言和基本的iOS基本常识后,正式进入OC的课程. 第一天,不仅认识了很多积极进取的同学.我们还接触到了如何控制label 让它显示指定的内容和Button 获取用户点击的事件的,虽然是简单的尝试,但是让我们对使用XCo

蓝懿IOS绘图Quartz2D练习

今天刘国斌老师给我们讲了Quartz2D,它是一个绘图工具在oc语言里设计者想在页面上画东西,必须先准备画板,再准备画布,之后在画布上绘图,最后渲染到屏幕. 开课快两个月了,老师讲课方式很独特,能够尽量让每个人都能弄明白,有的比较难懂的地方,如果有的地方还是不懂得话,老师会换个其它方法再讲解,这对于我们这些学习iOS的同学是非常好的,多种方式的讲解会理解得更全面,这个必须得给个赞,嘻嘻,还有就是这里的学习环境很好,很安静,可以很安心的学习,安静的环境是学习的基础,小班讲课,每个班20几个学生,学

蓝懿 ios的一周学习总结 刘国斌老师

再一次来到北京,我激励自已这一次一定要有所收获,有所成功.不能再像大学那样子混日子,浪费自已的青春,看着身边的朋友一个个的付出努力地汗水并成长着,而独自神伤的继续颓废.因为害怕失败所以我对未来的学习方向与机构进行了详细的考察.不光在网上多次咨询 还一次次到了每一个培训机构参观考察. 去过蓝欧 达内 千峰 尙观等,他们又大又小每一个我都试听了半天.每一个都亲身感受了一次,最后我来决定了来到蓝欧不仅仅是因为他的价格最低更是因为所有的培训机构所学的内容都是一样的,但老师要照顾六七十学生,和老师教20个

蓝懿IOS学习SQL数据库

当前类中导入头文件 // 1.打开数据库 // 创建数据库文件所在路径字符串 NSString *path = @"/Users/Boris/Public/蓝懿第三期/Day31 - SQLite/test.db"; // 创建数据库指针, 先赋值为空, 稍后他会被赋值. // 以防万一出现野指针, C语言的空是 NULL, ObjC的空是 nil sqlite3 *db = NULL; // 打开数据库, 并且把已经打开的数据库赋值给 db 这个指针. // 第一个参数是数据库文件位

蓝懿IOS学习图片编辑器

ios的学习在蓝懿另个月了,感觉学到了很多,这里的环境不错学习氛围也很好,刘国斌老师教了图片编辑,模拟美图秀秀,功能实现了边框,效果.滤镜,还有涂鸦. #pragma mark - Image picker controller 协议方法 - (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary<NSString *,id> *)info

#蓝懿ios学习的日子#2015年10月12鈤

已经是进入蓝懿基础训练营的第四天,今天是练习日,刘国斌老师让自己练习敲代码,大家都很积极,早早就来到教室开始时敲代码,我呢,就把这几天学习的都每个都创建了一个的项目,开始练习第一天,如何学习ioS是什么,比较与市场的其他编程,和其他系统的区别,了解职业发展的进程,最后,刘国斌老师不但给我们介绍了xcode,还教我们用Xcode做了个iOS的UI界面的一个UI类label的生成,还有生成界面是怎么样的(在后面的 图片会展示我的成果),我们大家没一人还练习了一遍,只要认真的看老师做一遍,会打字,就会

蓝懿iOS,刘国斌iOS

来到蓝懿已经是第四天了,刘国斌老师亲自授课.刘老师讲课非常好,很生动形象,便于我们零基础的理解.以前就有朋友和同学之类的做it行业,她们有些也是女生,也做得不错.这次通过朋友的介绍来到北京,刘国斌老师的培训机构,坐了22个小时的火车,简直累到内向,趋于崩溃.不过来到北京之后,刘国斌老师的助理很友好以及热情,帮我们联系住宿的地方,而且还帮忙提行李,心里面很感激. 8月底的时候去了一次千峰,第一感觉那里的学费比较贵,而刘国斌老师这里的ios培训第二期的女生只需要半价哦,6000元整,而且都是刘老师亲