iOS开发之使用Runtime给Model类赋值

Lida ·
更新时间:2024-11-14
· 938 次阅读

  本篇博客算是给网络缓存打个基础吧,本篇博客先给出简单也是容易使用的把字典转成实体类的方法,然后在给出如何使用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



model ios开发 runtime 赋值 IOS

需要 登录 后方可回复, 如果你还没有账号请 注册新账号