本篇博客算是给网络缓存打个基础吧,本篇博客先给出简单也是容易使用的把字典转成实体类的方法,然后在给出如何使用Runtime来给Model实体类赋值。本篇博客会介绍一部分,主要是字典的key与Model的属性名相同时,使用Runtime来进行赋值,下篇博客会给出字典key的值和Model的名字不同时的解决方案,并给出使用Runtime打印实体类属性值的方式。
  iOS开发中的Runtime可谓是功能强大,同时Runtime使用起来也是非常灵活的,博客的内容主要是使用到一丁点的Runtime的东西。好废话不多说了进入的整体。
  一、创建我们的测试工程
  在本测试工程中使用不到iOS开发的UI部分,所以我们创建一个基于系统控制台的工程,主调用代码当然是放到main函数中了,Project创建过程如下图所示,Create new project -> OS X -> Application -> Command Line Tool ->一路next即可

  二、创建我们的测试数据
  1.首先使用for循环创建一个字典,当然字典的key和value在这是有规律的,下面的for循环是创建我们的测试数据,如果在有网络请求的状态下,该测试字典的来源是你从网络请求的JOSN解析出来的字典,在这儿没有进行网络请求,因为网络请求不是本篇博客的重点,所以使用for循环生成一个测试字典以供使用。创建测试字典的代码如下,改代码的位置放在main函数当中:
  1         NSMutableDictionary *data = [[NSMutableDictionary alloc] initWithCapacity:11];
  2
  3         //创建测试适用的字典
  4         for(int i = 0; i <= 10; i ++){
  5             NSString *key = [NSString stringWithFormat:@"girl%d", i];
  6
  7             NSString *value = [NSString stringWithFormat:@"我是第%d个女孩", i];
  8
  9             [data setObject:value forKey:key];
  10         }
  上述代码生成字典,打印结果如下,可以看出字典是无序的,接下来将data这个字典作为我们网络请求JSON解析后的字典来使用。
  1 2015-07-20 22:33:15.742 BaseModelProject[65321:3224966] data = {
  2     girl0 = "我是第0个女孩";
  3     girl1 = "我是第1个女孩";
  4     girl10 = "我是第10个女孩";
  5     girl2 = "我是第2个女孩";
  6     girl3 = "我是第3个女孩";
  7     girl4 = "我是第4个女孩";
  8     girl5 = "我是第5个女孩";
  9     girl6 = "我是第6个女孩";
  10     girl7 = "我是第7个女孩";
  11     girl8 = "我是第8个女孩";
  12     girl9 = "我是第9个女孩";
  13 }
  三、创建data字典对应的实体类
  接下来将会创建Data字典对应的实体类,首先将会实现实体类的属性名和字典的key值一致的情况,然后在下篇博客中将会实现如何把不同key值的字典转换成实体类的属性。
  1、首先我们先创建一个实体类,这个实体类要继承与实体基类,因为一些公用的方法是在实体基类中进行编写的,如便利构造器,便利初始化方法,把字典转成Model属性等方法回被抽象到这个基类当中。创建实体类如下图所示,创建类的时候选中创建的基类即可:

  2. 这个实体类的命名为:BeautifulGirlModel,下面是BeautifulGirlModel中的属性,属性的名字和字典key的值相同,如下所示,BaseModelObject是之前创建的基类,BaseModelObject继承与NSObject即可。
1 //
2 //  BeautifulGirlModel.h
3 //  BaseModelProject
4 //
5 //  Created by Mr.LuDashi on 15/7/20.
6 //  Copyright (c) 2015年 ludashi. All rights reserved.
7 //
8
9 #import "BaseModelObject.h"
10
11 @interface BeautifulGirlModel : BaseModelObject
12
13 @property (nonatomic, copy) NSString *girl0;
14 @property (nonatomic, copy) NSString *girl1;
15 @property (nonatomic, copy) NSString *girl2;
16 @property (nonatomic, copy) NSString *girl3;
17 @property (nonatomic, copy) NSString *girl4;
18 @property (nonatomic, copy) NSString *girl5;
19 @property (nonatomic, copy) NSString *girl6;
20 @property (nonatomic, copy) NSString *girl7;
21 @property (nonatomic, copy) NSString *girl8;
22 @property (nonatomic, copy) NSString *girl9;
23 @property (nonatomic, copy) NSString *girl10;
24
25 @end