kvc机制与kvc的常用方法
来源:互联网 发布:淘宝阿里妈妈在哪里 编辑:程序博客网 时间:2024/05/23 12:39
kvc是key value coding的缩写,即:键值编码。键值编码提供了非常强大的功能:只要存在访问器方法、声明属性或实例变量,就可以将其名字指定为字符串来访问。
// 返回表示属性的键字符串对应的值
- (id)valueForKey:(NSString *)key;
Person *p1 = [[Person alloc] init];[p1 setValue:@"张三" forKey:@"name"]; NSString *name = [p1 valueForKey:@"name"];
// 将键字符串key所对应的属性的值设置为value
- (void)setValue:(id)value forKey:(NSString *)key;
// p1是Person类的对象,name是Person类的一个属性Person *p1 = [[Person alloc] init]; [p1 setValue:@"张三" forKey:@"name"];~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// 以点“.”切分键路径,并使用第一个键像接收器发送valueForKey:方法,然后在使用路径的下一个键,向得到的对象发送valueForKey:fangfa,如此反复操作,返回最后获得的对象。
- (id)valueForKeyPath:(NSString *)keyPath;
// 与valueForKeyPath:方法同样取出对象,这里只对路径中的最后一个键调用setValue:ForKey:方法,并设置属性值为value。
- (void)setValue:(id)value forKeyPath:(NSString *)keyPath;
例:
Dog类:
@interface <span style="color:#cc0000;">Dog</span> : NSObject// 狗的品种@property (nonatomic, copy) NSString *name;@endPerson类:
#import <Foundation/Foundation.h>#import "Dog.h"@interface <span style="color:#cc0000;">Person</span> : NSObject// 姓名@property (nonatomic, copy) NSString *name;// 年龄@property (nonatomic, assign) int age;// 电子邮件@property (nonatomic, copy) NSString *email;@property (nonatomic, strong) Dog *dog;@endmain函数:
#import <Foundation/Foundation.h>#import "Person.h"int main(int argc, const char * argv[]) { @autoreleasepool { Person *p1 = [[Person alloc] init]; // @"dog.name" 这个就叫做keyPath 或者叫 "属性的路径" [p1 setValue:@"哈士猫" forKeyPath:@"dog.name"];
<p style="margin-top: 0px; margin-bottom: 0px; font-size: 14px; line-height: normal; font-family: Menlo; color: rgb(52, 149, 175);"><span style="font-variant-ligatures: no-common-ligatures; color: #000000"> </span>NSString<span style="font-variant-ligatures: no-common-ligatures; color: #000000"> *dogName = [p1 </span>valueForKeyPath<span style="font-variant-ligatures: no-common-ligatures; color: #000000">:</span><span style="font-variant-ligatures: no-common-ligatures; color: #b4261a">@"dog.name"</span><span style="font-variant-ligatures: no-common-ligatures; color: #000000">];</span></p>
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// 根据字典的键,找对应的属性,为属性赋值(字典转模型)
- (void)setValuesForKeysWithDictionary:(NSDictionary *)keyedValues;
#import <Foundation/Foundation.h>#import "Person.h"int main(int argc, const char * argv[]) { @autoreleasepool { Person *p1 = [[Person alloc] init]; NSDictionary *bz = @{ @"name" : @"小明", @"age" : @28, @"email" : @"rzc0714@163.com", @"dog" : @{@"name" : @"加肥猫"} }; [p1 setValuesForKeysWithDictionary:bz];
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// 把对象转成字典
- (NSDictionary *)dictionaryWithValuesForKeys:(NSArray *)keys;
// 把对象转成字典 NSDictionary *dict = [p1 dictionaryWithValuesForKeys:@[@"name", @"age", @"email", @"dog"]];
0 0
- kvc机制与kvc的常用方法
- KVO与KVC键值监听的机制
- KVC的机制
- KVC的实现机制
- KVC 的 容错方法
- ios KVC机制的使用
- KVC
- Kvc....
- KVC
- KVC
- KVC
- KVC
- KVC
- kvc
- KVC
- KVC
- KVC
- KVC
- HDU 5510 Bazinga
- 使用Quartz创建定时任务
- NYOJ 722 数独
- 重装ubuntu 14.04记录笔记
- Quartz 2D学习(二)绘制曲线
- kvc机制与kvc的常用方法
- 我的JAVA之路(一)
- mybatis注解详解
- SQL语句的分类
- 求解最大子数组问题的三种方法
- MAC 下安装MATLAB2014b
- MyEclipse_环境搭建
- linux驱动platform平台设备总线
- 【我的成长之路——英语】——good luck charlie