runtime简单使用

将字典转化为模型,面向模型开发,是在开发中最为常用的功能。利用KVC可以将字典转换为模型,但是前提有三个约束,一个是必须保证模型的属性个数大于等于字典个数,二是属性名称与字典的key必须相同,三是对于模型中的基本数据类型无法转换。

其中第一条与第三条,是其最大的弊端。例如,如果从服务器获取的数据字典,并不想使用所有的键值对。但是在开发中还是必须得全部将对应属性列出,全部进行转换(除非你一个一个写,不使用KVC)。

下面的代码就可以解决上述问题:实现以模型为主,将字典数据进行部分转化,并识别基本数据类型。约束仅仅是要求模型属性名称与字典KEY保持一致(因为底层还是使用KVC);

//
 2 //  NSObject+Value.m
 3 //
 4 //  Created by Apple 2-2-2016.
 5 //  Copyright (c) 2016年 Apple. All rights reserved.
 6 //
 7 
 8 #import "NSObject+Value.h"
 9 #import 
10 #import 
11 
12 @implementation NSObject (Value)
13 - (void)setValues:(NSDictionary *)values
14 {
15     Class c = [self class];
16     
17     while (c) {
18         // 1.获得所有的成员变量
19         unsigned int outCount = 0;
20         Ivar *ivars = class_copyIvarList(c, &outCount);
21 
22         for (int i = 0; i

你可能感兴趣的:(runtime简单使用)