您的位置:首页 > 其它

OC循环渐进:KVC的其它操作

2015-08-08 12:28 429 查看
在KVC中,当你传入的一个字符串键值不存在时,程序会直接报错,那么如何避免这个问题呢?

我们可以在类中重写以下两个方法:

- (void)setValue:(id)value forUndefinedKey:(NSString *)key


- (id)valueForUndefinedKey:(NSString *)key


接下来我们就来使用以下以上两个方法:

1.定义一个Student类

Student.h 的文件代码如下:

#import <Foundation/Foundation.h>

@interface Student : NSObject

@end


Student.m 的文件代码如下:

#import "Student.h"

@implementation Student

- (void)setValue:(id)value forUndefinedKey:(NSString *)key {
NSLog(@"设置时使用不存在的键值:%@",key);
}

- (id)valueForUndefinedKey:(NSString *)key {
NSLog(@"调用时使用不存在的键值:%@",key);
return nil;
}

@end


2.main.m文件的输出

main.m的文件代码如下:

#import <Foundation/Foundation.h>
#import "Student.h"

int main(int argc, const char * argv[]) {
@autoreleasepool {

Student *stu = [[Student alloc] init];
//使用不存在的键值
[stu setValue:@"张三" forKey:@"name"];
[stu valueForKey:@"name"];

}
return 0;
}


测试结果如下:

2015-08-08 11:58:05.167 Demo[532:25965] 设置时使用不存在的键值:name
2015-08-08 11:58:05.171 Demo[532:25965] 调用时使用不存在的键值:name


除此之外,还有KVC中还有以下两个很重要的方法:

- (id)valueForKeyPath:(NSString *)keyPath;


- (void)setValuesForKeysWithDictionary:(NSDictionary *)keyedValues;


1.使用
- (id)valueForKeyPath:(NSString *)keyPath
方法如下:

main.m文件代码如下:

#import <Foundation/Foundation.h>
#import "Student.h"

int main(int argc, const char * argv[]) {
@autoreleasepool {

//创建多个字典
NSDictionary *dict1 = [NSDictionary dictionaryWithObjectsAndKeys:@"张三",@"name",@"15",@"age",nil];
NSDictionary *dict2 = [NSDictionary dictionaryWithObjectsAndKeys:@"李四",@"name",@"16",@"age",nil];
NSDictionary *dict3 = [NSDictionary dictionaryWithObjectsAndKeys:@"王五",@"name",@"17",@"age",nil];

//定义一个数组
NSArray *arra
a8d6
y= [NSArray arrayWithObjects:dict1,dict2,dict3,nil];

//数组使用KVC过滤
array = [array valueForKeyPath:@"name"];

//数组输出
for (NSString *str in array) {
NSLog(@"name = %@",str);
}

}
return 0;
}


测试结果如下:

2015-08-08 12:15:39.780 Demo[541:29205] name = 张三
2015-08-08 12:15:39.785 Demo[541:29205] name = 李四
2015-08-08 12:15:39.785 Demo[541:29205] name = 王五


2.’-(void)setValuesForKeysWithDictionary:(NSDictionary *)keyedValues’主要用于UI中的字典转模型,在UI中再介绍

至此,KVC中的常见用法以及全部讲完!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  KVC OC