iOS开发之使用Runtime给Model类赋值
作者:网络转载 发布时间:[ 2015/7/30 13:48:46 ] 推荐标签:移动开发
本篇博客算是给网络缓存打个基础吧,本篇博客先给出简单也是容易使用的把字典转成实体类的方法,然后在给出如何使用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
相关推荐
更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11