iOS开发项目篇—25字典转模型第三方框架、运行时机制简介

iOS开发项目篇—25字典转模型第三方框架、运行时机制简介

一、使用第三方框架完成字典转模型

1.获取框架

在www.code4app.com网站中,搜索字典转模型

可以点击下载代码进行下载,也可以带github上去下载。

管理框架的好处:点击刷新按钮会刷新所有的项目。

2.使用

1.导入第三方框架

2.使用示例

错误提示:

在刷新的时候直接使用一行代码即可:

 1 /**加载最新微博数据*/
 2 -(void)loadNewStatus
 3 {
 4     //1.获得请求管理者
 5     AFHTTPRequestOperationManager *mgr = [AFHTTPRequestOperationManager manager];
 6
 7     //2.封装请求参数
 8
 9     NSMutableDictionary *params=[NSMutableDictionary dictionary];
10     params[@"access_token"] =[YYAccountTool accountModel].access_token;
11     //设置请求返回3天数据
12     params[@"count"][email protected]12;
13
14
15     //3.发送Post请求
16    // url:https://api.weibo.com/2/statuses/home_timeline.json
17     [mgr GET:@"https://api.weibo.com/2/statuses/home_timeline.json" parameters:params success:^(AFHTTPRequestOperation *operation, NSDictionary*accountDict) {
18
19         YYLog(@"请求成功--%@",accountDict[@"statuses"]);
20 //        self.statuses=accountDict[@"statuses"];
21
22         self.statuses = [NSMutableArray array];
23
24         // 微博字典 -- 数组
25         NSArray *statusDictArray = accountDict[@"statuses"];
26
27         //微博字典数组---》微博模型数组
28         self.statuses=[YYStatusModel objectArrayWithKeyValuesArray:statusDictArray];
29
30 //        for (NSDictionary *statusDict in statusDictArray) {
31 //            YYStatusModel *status = [YYStatusModel objectWithKeyValues:statusDict];
32 //            [self.statuses addObject:status];
33 //        }
34 //
35
36         //重新刷新表格
37         [self.tableView reloadData];
38     } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
39         YYLog(@"请求失败");
40     }];
41
42 }

告知数组里面存放的是模型:

 1 //
 2 //  YYStatusModel.m
 3 //
 4
 5 #import "YYStatusModel.h"
 6 #import "MJExtension.h"
 7 #import "YYPhotoModel.h"
 8
 9 @implementation YYStatusModel
10 //+(instancetype)statusModelWithDict:(NSDictionary *)Dict
11 //{
12 //    YYStatusModel *model=[[self alloc]init];
13 //    model.text=Dict[@"text"];
14 //
15 //    model.user=[YYUserModel userModelWithDict:Dict[@"user"]];
16 //
17 //    //嵌套模型
18 //    NSDictionary *retweetedDict = Dict[@"retweetedDict"];
19 //    if (retweetedDict) {
20 //        model.retweeted_status=[YYStatusModel statusModelWithDict:retweetedDict];
21 //    }
22 //    return model;
23 //}
24
25 -(NSDictionary *)objectClassInArray
26 {
27       return @{@"pic_urls" : [YYPhotoModel class]};
28 }
29
30 @end

效果:

二、运行时简介

运行时:其实就是OC的底层,平时写的OC代码,最终都转换成底层的运行时代码(纯C语言)

查看生成的文件

转换后的main函数:

去除强制转换后的代码:

注意:理解消息机制

编译器会把我们写的所有OC代码都转换成运行时代码,上面的代码转换成发送消息

OC是披了一件面向对象外衣的C语言。

运行时强调可以动态的修改、删除方法等。

iOS开发项目篇—25字典转模型第三方框架、运行时机制简介,布布扣,bubuko.com

时间: 2024-10-05 05:07:20

iOS开发项目篇—25字典转模型第三方框架、运行时机制简介的相关文章

iOS开发项目篇—24字典转模型

iOS开发项目篇—24字典转模型 一.直接使用字典转模型 1.微博数据转模型示意图: 2.字典转模型 查询字段: 新建需要的数据模型: 字典转模型相关的代码: YYUserModel.h文件 1 // 2 // YYUserModel.h 3 // 4 5 #import <Foundation/Foundation.h> 6 7 @interface YYUserModel : NSObject 8 9 /** string 友好显示名称*/ 10 @property(nonatomic,c

iOS开发项目篇—36封装微博业务

iOS开发项目篇—36封装微博业务 一.简单说明 1.请求参数面向模型 2.请求结果面向模型 3.对控制器来说应该屏蔽业务细节.不让控制器关心(知道)业务细节,它只需要知道自己在做某个业务 @通过一个专门的业务处理类:处理微博业务细节 说明: 业务:加载新的微博首页数据 实现:给新浪服务器发送一个GET请求 业务:加载更多的首页微博数据 实现1:给新浪服务器发送一个GET请求 实现2:去沙盒中加载以前离线缓存的微博数据  二.实现 1.新建一个微博业务处理类,继承自NSObject 微博业务处理

iOS开发项目篇—34获取用户信息

iOS开发项目篇—34获取用户信息 一.简单说明 需求:获取当前用户的昵称 ,需要获取当前登录用户的个人信息. 查看接口 要求传递的参数 这里要获取的时用户的昵称(所以使用用户id作为参数传入) 二.实现代码 1 - (void)viewDidLoad 2 { 3 [super viewDidLoad]; 4 5 //设置导航栏内容 6 [self setupNavBar]; 7 8 //集成刷新控件 9 [self setupRefresh]; 10 11 //设置用户的昵称为标题 12 [s

iOS开发项目篇—39获取用户未读的微博信息(信息提醒)

iOS开发项目篇—39获取用户未读的微博信息(信息提醒) 一.简单说明 1.实现效果       2.实现 (1)新建一个类,封装请求 查看新浪官方要求的请求参数 该类中的代码设计 YYUnreadCountParam.h文件 1 // YYUnreadCountParam.h 2 //封装请求参数的类 3 4 #import "YYBaseParam.h" 5 6 @interface YYUnreadCountParam : YYBaseParam 7 /**uid true in

iOS开发项目篇—30下拉刷新

iOS开发项目篇—30下拉刷新 一.网络监控 当应用所处的网络环境不好的时候,获取不到相应的网络数据,考虑到用户对应用的使用体验,有必要对网络的状况进行监听. 在程序启动完的时候,监控网络 YYAppDelegate.m文件代码: 1 // 2 // YYAppDelegate.m 3 // 4 5 #import "YYAppDelegate.h" 6 #import "YYOAuthViewController.h" 7 #import "YYCont

iOS开发项目篇—37封装其他业务

iOS开发项目篇—37封装其他业务 一.简单说明 项目分层的步骤: (1)新建一个模型类封装请求参数 (2)新建一个模型类封装请求结果(返回结果) (3)新建一个业务类封装专一的业务 二.获得用户信息业务的封装 (1)新建一个模型类封装请求参数 查看新浪官方获取用户信息需要哪些请求参数: 封装请求参数的类的代码设计: YYUserInfoParam.h文件 1 // 2 // YYUserInfoParam.h 3 // 4 5 #import <Foundation/Foundation.h>

iOS开发项目篇—46时间和来源的处理(cell的复用问题)

iOS开发项目篇—46时间和来源的处理(cell的复用问题)一.简单说明 1.存在的问题:             2.问题描述: 刷新微博界面后,展示的最新的微博数据时间显示为“刚刚”,在项目中对时间进行设计的时候,如果是在1分钟之内发表的,那么显示为“刚刚”.查看后面的微博数据后,回过头来(1分钟已经过去了),此时之前显示为“刚刚”的微博,应该显示XX分钟以前,确实显示了,但是时间的frame不正确(此时的frame=="刚刚"两个字的frame). 提示:cell的复用问题,为了

iOS开发项目篇—38深层重构

iOS开发项目篇—38深层重构 一.简单说明 说明:可以发现每个工具类,内部方法的代码长相都差不多,可以考虑再抽取出一个处理业务的公共的工具类,让其他的业务类继承自这个工具类,降低代码的冗余度. 1.新建一个工具类 该基础业务处理工具类中的代码设计: YYBaseTool.h文件 1 // 2 // YYBaseTool.h 3 4 //最基本的业务工具类 5 6 #import <Foundation/Foundation.h> 7 8 @interface YYBaseTool : NSO

iOS开发项目篇—41cell的frame的细节处理

iOS开发项目篇—41cell的frame的细节处理 一.简单说明 在首页控制器中使用自定义的UITableViewcell 代码如下: YYHomeTableViewController.m文件 1 // 2 // YYHomeTableViewController.m 3 // 4 5 #import "YYHomeTableViewController.h" 6 #import "YYOneViewController.h" 7 #import "Y