請求推薦數(shù)據(jù)
請求方式: AFNetworking&Alamofire?
目前在iOS開發(fā)中, 請求網(wǎng)絡(luò)數(shù)據(jù), 我們經(jīng)常會使用第三方框架. 而比較出名的莫過于AFNetworking
不過AFNetworking是使用OC開發(fā)的框架,作者又專門針對Swift開發(fā)了另外一個框架就是:Alamofire。
因為我們該項目是Swift版本,所有直接采用Alamofire
注:其實Alamofire非常強大,不過我們這里只是發(fā)送請求,使用起來是非常方便的。
集成Alamofire
在iOS開發(fā)中,如果我們集成一個第三方框架,通常會使用Cocoapods
因此,我們這里通過Cocoapods進行集成
找到項目所在目錄:
打開終端:
進入項目目錄,執(zhí)行:
pod init
操作之后會生成Profile文件,打開Profile文件(記事本、Xcode打開即可,推薦Xcode打開)
將下面代碼粘貼過去
回到終端,執(zhí)行
pod install --no-repo-update
命令關(guān)閉程序,通過
工作空間
打開項目
工具類的封裝
在實際開發(fā)中,為了不過于依賴某一個第三方框架,我們經(jīng)常會在使用的方式封裝到某一個工具類中,以便于某天該框架不更新時不至于很多地方都需要修改。
比如之前的ASIHTTPRequest就出現(xiàn)了不更新的情況
因此,我們在使用之前先封裝一個簡單的工具類。之后在其它任何地方發(fā)送網(wǎng)絡(luò)請求,都依賴于自己的工具類。如果某一天該框架不再更新,我們希望更換框架,只修改工具類中代碼即可。
創(chuàng)建工具類:NetworkTools
為工具類提供類方法,方便調(diào)用
請求時,需要傳入請求方式、地址(URL)、參數(shù)(parameters)、回調(diào)閉包
在請求方法中,使用Alamofire發(fā)送網(wǎng)絡(luò)請求
MVVM介紹
前面環(huán)境配置完成后,我們要請求首頁數(shù)據(jù)。
數(shù)據(jù)請求在哪里發(fā)送了?
MVC模式
Model-View-Controller是一個Apple官方推薦的權(quán)威范式。
蘋果使用的MVC的定義是這么說的:所有的對象都可以被歸類為一個model,一個view,或是一個controller。
那么把網(wǎng)絡(luò)代碼放哪里?
我們知道,因為控制器是一個大管家,那么不知道如何安放的代碼就放置在控制器中
是的,傳統(tǒng)的MVC方式我們經(jīng)常這么做。
該做法的弊端在哪里?
由于大量的代碼被放進view controller,導(dǎo)致控制器變的相當(dāng)臃腫。
在iOS開發(fā)中有的view controller里綿延成千上萬行代碼的事并不是前所未見的
厚重的View Controller很難維護(由于其龐大的規(guī)模);包含幾十個屬性,使他們的狀態(tài)難以管理;遵循許多協(xié)議(protocol),導(dǎo)致協(xié)議的響應(yīng)代碼和controller的邏輯代碼混淆在一起。
那么究竟應(yīng)該放在哪里?
顯然MVC的3大組件根本沒有適合放這些代碼的地方。
MVVM模式
MVVM來自微軟。和MVC很像,并且引入新的組件ViewModel
view model是一個放置用戶輸入驗證邏輯,視圖顯示邏輯,發(fā)起網(wǎng)絡(luò)請求和其他各種各樣的代碼的極好的地方。
由于展示邏輯放在了view model中(比如網(wǎng)絡(luò)請求、請求后的數(shù)據(jù)解析等等),視圖控制器本身就會不再臃腫。
因此,該項目中的請求數(shù)據(jù),統(tǒng)一交給ViewModel管理。每一個控制器對應(yīng)一個屬于自己的ViewModel。
發(fā)送網(wǎng)絡(luò)請求
接口解析
在推薦的數(shù)據(jù)展示中,有三個請求
最熱數(shù)據(jù)請求
顏值數(shù)據(jù)請求
其它數(shù)據(jù)請求
因此我們需要分別發(fā)送三個請求,并且當(dāng)所有的請求數(shù)據(jù)拿到之后,對數(shù)據(jù)進行整理分組排序。(因為界面中有用到分組)
因此請求分成五步曲
請求游戲數(shù)據(jù),并且轉(zhuǎn)成模型對象
請求顏值數(shù)據(jù),并且轉(zhuǎn)成模型對象
請求熱門數(shù)據(jù),并且轉(zhuǎn)成模型對象
對數(shù)據(jù)進行整理,并且放入大的數(shù)組中
將數(shù)據(jù)傳遞給外面控制器,展示數(shù)據(jù)
接口描述
接口名稱:熱門數(shù)據(jù)(后面熱門游戲)
接口地址:http://capi.douyucdn.cn/api/v1/getHotCate
請求參數(shù):
參數(shù)名稱 | 參數(shù)說明 |
---|---|
time | 獲取當(dāng)前時間的字符串 |
limit | 獲取數(shù)據(jù)的個數(shù) |
offset | 偏移的數(shù)據(jù)量 |
接口名稱:顏值數(shù)據(jù)(第二組顏值數(shù)據(jù))
接口地址:http://capi.douyucdn.cn/api/v1/getVerticalRoom
請求參數(shù):
參數(shù)名稱 | 參數(shù)說明 |
---|---|
time | 獲取當(dāng)前時間的字符串 |
limit | 獲取數(shù)據(jù)的個數(shù) |
offset | 偏移的數(shù)據(jù)量 |
接口名稱:大數(shù)據(jù)數(shù)據(jù)(第一組熱門數(shù)據(jù))
接口地址:http://capi.douyucdn.cn/api/v1/getbigDataRoom
請求參數(shù):
參數(shù)名稱 | 參數(shù)說明 |
---|---|
time | 獲取當(dāng)前時間的字符串 |
展示數(shù)據(jù)
普通數(shù)據(jù)展示(文本數(shù)據(jù))
將數(shù)據(jù)回調(diào)給控制器后,控制器拿到數(shù)據(jù)展示數(shù)據(jù)即可
將Cell中的控件拖入屬性
定義模型對象
在控制器中拿到模型,并且將模型傳入給Cell進行展示
圖片數(shù)據(jù)展示
在設(shè)置網(wǎng)絡(luò)圖片時,OC中經(jīng)常使用SDWebImage框架。
相同的原因,我們使用的Swift項目,因此這里我使用
onevcat
, 也就是喵神
寫的Kingfisher
在Profile中加入框架, 并且執(zhí)行安裝命令
pod install —no-repo-update
使用代碼
更多資訊歡迎登陸520it.com。小碼哥社區(qū),編程愛好者的家園。
(正文已結(jié)束)
推薦閱讀:筆記本性價比排行
免責(zé)聲明及提醒:此文內(nèi)容為本網(wǎng)所轉(zhuǎn)載企業(yè)宣傳資訊,該相關(guān)信息僅為宣傳及傳遞更多信息之目的,不代表本網(wǎng)站觀點,文章真實性請瀏覽者慎重核實!任何投資加盟均有風(fēng)險,提醒廣大民眾投資需謹(jǐn)慎!