KVC - key value coding
1. 创建Model类
创建一个继承自NSObject的Model类在Objective-C中,首先需要创建一个符合数据结构的Model类。我们假设需要处理的数据包括姓名、描述以及一组书籍。
在Model类中声明相应的属性:
@property (nonatomic, strong) NSString *name;@property (nonatomic, strong) NSString *desc;@property (nonatomic, strong) NSMutableArray *books;2. 实现KVC方法
通过重写KVC方法来处理数据赋值和键值转换
当键为"desc"时:
if ([key isEqualToString:@"description"]) { self.desc = value; }当键为"books"时:
if ([key isEqualToString:@"books"]) { // 需要将数组转换为Model的实例 for (id obj in value) { [_photoList addObject:[Photo instanceObj:obj]]; } }- (id)valueForUndefinedKey:(NSString *)key { return nil; }3. 数据解析过程
在需要解析数据的控制器中调用以下方法
[model setValuesForKeysWithDictionary:dic];解析示例
完整的解析过程示例代码如下:
NSDictionary *dic = @{ @"name": @"John Doe", @"description": @"Hello World", @"books": [{ @"title": @"The Great Gatsby", @"author": @"F. Scott Fitzgerald" }] }; Model *model = [[Model alloc] init]; [model setValuesForKeysWithDictionary:dic];注意事项
1. 对于数组类型的键值,需要在Model中预先声明相应的属性
2. 在处理KVC时,需要注意键名与属性名的对应关系 3. 如果遇到特殊需求,可以自定义KVC行为转载说明
原文地址: https://my.oschina.net/adso/blog/682174