IOS学习之初识KVC
2016-05-17 19:13
477 查看
什么是kvc?
kvc (key-value coding )键值编码,是ios 提供的一种通过key间接的来访问对象属性的一直方式。哪些类支持kvc操作?
kvc的操作方法由NSKeyValueCoding协议提供,也就是说只要是这个协议的对象都支持kvc操作。具体怎么使用?
动态设置:setValue:属性值 forKey:属性名(用于简单路径)
setValue:属性值 forKeyPath:属性路径 比如修改Person对象中Car的品牌 路径就是(car.brand)
动态读取:
valueForKey:属性名
valueForKeyPath:属性名(用于复合路径)
具体写个测试程序看下:
Person.h
#import <Foundation/Foundation.h> @interface Person : NSObject { @private NSString *address; } @end
Person.m
#import "Person.h" #import "Car.h" @interface Person () @property (nonatomic ,strong) NSString *name; @property (nonatomic,strong)Car *car; @end @implementation Person -(id)init { self=[super init]; if(self){ self =[super init]; self.car=[[Car alloc]init]; } return self; } @end
Car.h
#import <Foundation/Foundation.h> @interface Car : NSObject @end
Car.m
#import "Car.h" @interface Car() @property (nonatomic ,strong) NSString *brand; @end @implementation Car @end
上述是就是本知识点的测试程序,我全部写的都是私有变量,我个人觉得用这种kvc机制去修改一个公有属性是一件完全没有意义的事情,直接不赋值不挺好?没必要绕这么一圈吧?可能我初学乍道,有别的原因希望有人能告诉我!
直接看具体测试:
[self.person setValue:@"zhejiang" forKey:@"address"]; [self.person setValue:@"whoislcj" forKey:@"name"]; [self.person setValue:@"aodi" forKeyPath:@"car.brand"]; NSLog(@"person.name ---->%@",[self.person valueForKey:@"name"]); NSLog(@"person.address ---->%@",[self.person valueForKey:@"address"]); NSLog(@"person.car.name ---->%@",[self.person valueForKeyPath:@"car.brand"]);
相关文章推荐
- IOS 时间标签
- iOS 模拟轮胎滚动3D动画效果
- 按钮上拉伸图片
- ios 第三方库
- iOS-应用程序生命周期
- IOS 开发,调用打电话,发短信,打开网址
- ios开发——xcode重构(修改类名、文件名等)
- iOS8 屏幕横竖屏分析
- iOS锄大地发牌算法
- iOS 应用程序秒退原因分析及解决思路总结
- IOS 使用QLPreviewController浏览PDF WORD等文件
- iOS中pch文件和info.plist文件的作用
- Xcode因为证书问题经常报的那些错
- iOS - Xcode -Target , PROJECT 区别
- iOS判断字符串中是否含有非法字符
- iOS8自定义推送显示按钮及推送优化
- iOS 隐藏系统tabBar及需要push两层时候tabBar的隐藏方法
- iOS GCD
- iOS源生二维码扫描及生成
- iOS开发之集成ijkplayer视频直播