Objective-C 基础知识之 (十五):KVC
来源:互联网 发布:环境破坏的资料数据 编辑:程序博客网 时间:2024/05/16 17:05
KVC
Key-Value-Coding 键值编码,是一种间接访问实例变量的方法。
Key:用于标识实例变量。
Value:实例变量对应的值。
使用场景:创建的类的实例变量声明为私有,在类的外部需要使用时采用此方法赋值和取值。
例:只声明Person对象,未声明实例变量和实现方法。
创建Person对象:Person * p = [ [Person alloc]init];
主要方法如下:
使用:setValue: forKey: 为需要的变量赋值。
[p setValue:@” Joe”forKey:@”name”];
使用:valueForKey: 读取值
NSLog(@"%@", [pvalueForKey:@"name"]);
当key不存在的时候,会执行setValue:forUndefinedKey:
如果赋值时的key和读取的key不一致,在类的实现文件中实现:
- (void)setValue:(id)value forUndefinedKey:(NSString *)key
{ 可以没有函数体
}
如果读取时的key和赋值时的key不一致,在类的实现文件中实现:
-(id)valueForUndefinedKey:(NSString *)key
{ 可以返回错误说明。
}
setValuesForKeysWithDictionary:
使用场景为:获取一组联系人的信息
数组中存储了N个联系人,使用字典来表示联系人。(在iOS开发时,需要将字典封装成对象)
1、创建对象
2、将字典中的值取出来,存入对象的实例变量中。
创建一个字典,描述一个学生的信息
NSDictionary * dic= @{@"name": @"Joe",
@"gender":@"female",
@"age": @20,
@"id":@1};
创建存储字典值的对象
Student * stu =[[Student alloc]init];
常规方法:
stu.name = [dicobjectForKey:@"name"];
stu.gender = [dicobjectForKey:@"gender"];
stu.name = [[dicobjectForKey:@"age"] integerValue];
使用setValuesForKeysWithDictionary:一次性存储数据。
[stu setValuesForKeysWithDictionary:dic];
NSLog(@"%@",stu.name);
NSLog(@"%@",stu.gender);
NSLog(@"%ld",stu.age);
NSLog(@"%ld",stu.number);
如果字典中使用了和OC中一样的关键字,则要在类的实现文件中实现对应的处理方法:
如:字典中使用了id关键字。
-(void)setValue:(id)value forUndefinedKey:(NSString *)key
{
//字典中的key是id, 实例变量是number
//如果使用setValue:forKey:时,传入的key是id,把id的值赋给number
if ([keyisEqualToString:@"id"]) {
_number = [valueintegerValue];
}
}
setValue:forKeyPath:
valueForKeyPath:
使用场景:类中有类,如学生对象中包含了一个书的类。
给书赋值和取值:
创建学生对象:Student * s = [[Student alloc]init];
创建书对象:Book * b = [[Book alloc]init];
s.book = b;
给学生的书籍设置名字,路径:student -> book -> name
[ssetValue:@"xiyouji" forKeyPath:@"book.name"];
NSLog(@"%@",[s valueForKeyPath:@"book.name"]);
也可以使用点语法:
s.book.name =@"sanguo";
NSLog(@"%@",s.book.name);
- Objective-C 基础知识之 (十五):KVC
- Objective-C之KVC
- Objective-C 之KVC详解
- Objective-C之KVC、KVO
- Objective-C之KVC、KVO
- Objective-C之KVC(键值编码)详解
- Objective-C语法之KVC的使用
- Objective-C语法之KVC的使用
- Objective-C语法之KVC的使用
- Objective-C语法之KVC的使用
- Objective-C语法之KVC的使用
- Objective-C语法之KVC的使用
- Objective-C语法之KVC的使用
- Objective-C语法之KVC的使用
- Objective-C语法之KVC的使用
- Objective-C语法之KVC的使用
- Objective-C语法入门之KVC & KVO
- Objective-C语法之KVC的使用
- 第九周第五天
- UVa 460 - Overlapping Rectangles
- 培训第三天
- hdu1162
- Codeforces Beta Round #3——B. Lorry
- Objective-C 基础知识之 (十五):KVC
- 实在小店在B2C平台具有一定的知名度
- R操作数据库里面的数据
- poj2289Jamie's Contact Groups(好题)
- ios的系统框架
- lua的table.sort 中出现 invalid order function for sorting
- 异常和异常处理
- SBT下载特别慢的问题解决
- 我自己的软弱和情绪