请求推荐数据
请求方式: AFNetworking&Alamofire?
目前在iOS开发中, 请求网络数据, 我们经常会使用第三方框架. 而比较出名的莫过于AFNetworking
不过AFNetworking是使用OC开发的框架,作者又专门针对Swift开发了另外一个框架就是:Alamofire。
因为我们该项目是Swift版本,所有直接采用Alamofire
注:其实Alamofire非常强大,不过我们这里只是发送请求,使用起来是非常方便的。
集成Alamofire
在iOS开发中,如果我们集成一个第三方框架,通常会使用Cocoapods
因此,我们这里通过Cocoapods进行集成
找到项目所在目录:
打开终端:
进入项目目录,执行:
pod init
操作之后会生成Profile文件,打开Profile文件(记事本、Xcode打开即可,推荐Xcode打开)
将下面代码粘贴过去
回到终端,执行
pod install --no-repo-update
命令关闭程序,通过
工作空间
打开项目
工具类的封装
在实际开发中,为了不过于依赖某一个第三方框架,我们经常会在使用的方式封装到某一个工具类中,以便于某天该框架不更新时不至于很多地方都需要修改。
比如之前的ASIHTTPRequest就出现了不更新的情况
因此,我们在使用之前先封装一个简单的工具类。之后在其它任何地方发送网络请求,都依赖于自己的工具类。如果某一天该框架不再更新,我们希望更换框架,只修改工具类中代码即可。
创建工具类:NetworkTools
为工具类提供类方法,方便调用
请求时,需要传入请求方式、地址(URL)、参数(parameters)、回调闭包
在请求方法中,使用Alamofire发送网络请求
MVVM介绍
前面环境配置完成后,我们要请求首页数据。
数据请求在哪里发送了?
MVC模式
Model-View-Controller是一个Apple官方推荐的权威范式。
苹果使用的MVC的定义是这么说的:所有的对象都可以被归类为一个model,一个view,或是一个controller。
那么把网络代码放哪里?
我们知道,因为控制器是一个大管家,那么不知道如何安放的代码就放置在控制器中
是的,传统的MVC方式我们经常这么做。
该做法的弊端在哪里?
由于大量的代码被放进view controller,导致控制器变的相当臃肿。
在iOS开发中有的view controller里绵延成千上万行代码的事并不是前所未见的
厚重的View Controller很难维护(由于其庞大的规模);包含几十个属性,使他们的状态难以管理;遵循许多协议(protocol),导致协议的响应代码和controller的逻辑代码混淆在一起。
那么究竟应该放在哪里?
显然MVC的3大组件根本没有适合放这些代码的地方。
MVVM模式
MVVM来自微软。和MVC很像,并且引入新的组件ViewModel
view model是一个放置用户输入验证逻辑,视图显示逻辑,发起网络请求和其他各种各样的代码的极好的地方。
由于展示逻辑放在了view model中(比如网络请求、请求后的数据解析等等),视图控制器本身就会不再臃肿。
因此,该项目中的请求数据,统一交给ViewModel管理。每一个控制器对应一个属于自己的ViewModel。
发送网络请求
接口解析
在推荐的数据展示中,有三个请求
最热数据请求
颜值数据请求
其它数据请求
因此我们需要分别发送三个请求,并且当所有的请求数据拿到之后,对数据进行整理分组排序。(因为界面中有用到分组)
因此请求分成五步曲
请求游戏数据,并且转成模型对象
请求颜值数据,并且转成模型对象
请求热门数据,并且转成模型对象
对数据进行整理,并且放入大的数组中
将数据传递给外面控制器,展示数据
接口描述
接口名称:热门数据(后面热门游戏)
接口地址:http://capi.douyucdn.cn/api/v1/getHotCate
请求参数:
参数名称 | 参数说明 |
---|---|
time | 获取当前时间的字符串 |
limit | 获取数据的个数 |
offset | 偏移的数据量 |
接口名称:颜值数据(第二组颜值数据)
接口地址:http://capi.douyucdn.cn/api/v1/getVerticalRoom
请求参数:
参数名称 | 参数说明 |
---|---|
time | 获取当前时间的字符串 |
limit | 获取数据的个数 |
offset | 偏移的数据量 |
接口名称:大数据数据(第一组热门数据)
接口地址:http://capi.douyucdn.cn/api/v1/getbigDataRoom
请求参数:
参数名称 | 参数说明 |
---|---|
time | 获取当前时间的字符串 |
展示数据
普通数据展示(文本数据)
将数据回调给控制器后,控制器拿到数据展示数据即可
将Cell中的控件拖入属性
定义模型对象
在控制器中拿到模型,并且将模型传入给Cell进行展示
图片数据展示
在设置网络图片时,OC中经常使用SDWebImage框架。
相同的原因,我们使用的Swift项目,因此这里我使用
onevcat
, 也就是喵神
写的Kingfisher
在Profile中加入框架, 并且执行安装命令
pod install —no-repo-update
使用代码
更多资讯欢迎登陆520it.com。小码哥社区,编程爱好者的家园。
推荐阅读:旗龙网
-
麦咭小小编程师教你做《万有引力》小游戏--福
由深圳市科学技术协会、福田区科技创新局(福田区科协)指导,由福田区华富办事处妇女联合会、深圳市新联会科技联盟、深业上城联合体综合党委、深圳市高科技企业协同创新促...
2021-05-08 -
加拿大留学移民必备电话卡,双十一“神秘计划”
加拿大气候虽然慢慢变冷了但双十一以及黑五的临近又点燃了大家的购物热情每到一年秋冬季节,只有买买买能让体温升高各种优惠折扣看得眼花缭乱来!让小编教你~怎么在双十一...
2020-11-11 -
留学省钱攻略之加拿大电话卡|文末有福利彩蛋
加拿大的电话套餐是出了名的贵。作为非土豪留学生一枚,平时适当省检是留学生活的基本方针。毕竟谁的钱也不是大风刮来的。所以就电话卡的挑选简单分享一下省钱攻略:我之前...
2020-10-26 -
南方医科大学以学分制改革打通成人教育和自学考
建16个成人教育校外授课点和23个自考互助点南方医科大学以学分制改革打通成人教育和自学考试校本部正门媒体记者了解到,南方医科大学继续教育学院前身为第一军医大学继...
2020-07-24 -
有才又有料!第六届上汽通用汽车校园创新传播工
近日,第六届上汽通用汽车校园创新传播工场(ICCG)在广大高校师生的期待中盛势启幕,年度大学生跨界创意盛宴正式上线。作为面向大学生推出的校园创新平台,第六届IC...
2020-06-15 -
沈梦辰晒日系旅游美照 白T恤配米色阔腿裤减龄
9月4日,沈梦辰在微博晒出一组旅行美照并配文:“结果不重要,过程才是风景。”照片中,沈梦辰身穿白色T恤搭配米色阔腿裤,十分清新。沈梦辰美照沈梦辰...
2019-09-05 -
让地球氧气在5亿年前猛增的神秘力量找到了
宇宙探秘本报记者 张 晔氧气是人类和动物赖以生存的基础。但是,远古时期的地球曾极度缺氧,是一片不折不扣的生命禁区。然而,到了距今5.8亿—5.2亿年左右,地球氧...
2019-09-05 -
猪肉价格涨疯了 卖车还不如养猪挣钱?
最近,猪肉价格上涨引起广泛关注,据搜猪网分析师冯永辉测算,按照目前生猪市场价格,养殖户头均盈利已达到1491元,创历史新高。对此,有网友调侃,“猪”似乎有成为“...
2019-09-05