国产午夜男女在线|欧美日本一道高清国产|亚洲日韩乱码中文字幕|麻豆国产97在线精品一区|日韩一区2区三区另类图片|亚洲精品国产99在线观看|亚洲国产午夜福利精品大秀在线|一级做a爰片性色毛片免费网站

您當(dāng)前的位置 :寧夏資訊網(wǎng) > 資訊 >  內(nèi)容正文
投稿

玩轉(zhuǎn)斗魚(yú)直播APP——請(qǐng)求展示推薦數(shù)據(jù)篇!

寧夏資訊網(wǎng) 2021-01-15 07:09:44 來(lái)源: 閱讀:-

請(qǐng)求推薦數(shù)據(jù)

請(qǐng)求方式: AFNetworking&Alamofire?

  • 目前在iOS開(kāi)發(fā)中, 請(qǐng)求網(wǎng)絡(luò)數(shù)據(jù), 我們經(jīng)常會(huì)使用第三方框架. 而比較出名的莫過(guò)于A(yíng)FNetworking

  • 不過(guò)AFNetworking是使用OC開(kāi)發(fā)的框架,作者又專(zhuān)門(mén)針對(duì)Swift開(kāi)發(fā)了另外一個(gè)框架就是:Alamofire。

  • 因?yàn)槲覀冊(cè)擁?xiàng)目是Swift版本,所有直接采用Alamofire

    • 注:其實(shí)Alamofire非常強(qiáng)大,不過(guò)我們這里只是發(fā)送請(qǐng)求,使用起來(lái)是非常方便的。

集成Alamofire

  • 在iOS開(kāi)發(fā)中,如果我們集成一個(gè)第三方框架,通常會(huì)使用Cocoapods

  • 因此,我們這里通過(guò)Cocoapods進(jìn)行集成

  • 找到項(xiàng)目所在目錄:

    玩轉(zhuǎn)斗魚(yú)直播APP——請(qǐng)求展示推薦數(shù)據(jù)篇

  • 打開(kāi)終端:

    • 進(jìn)入項(xiàng)目目錄,執(zhí)行:pod init操作

      玩轉(zhuǎn)斗魚(yú)直播APP——請(qǐng)求展示推薦數(shù)據(jù)篇

    • 之后會(huì)生成Profile文件,打開(kāi)Profile文件(記事本、Xcode打開(kāi)即可,推薦Xcode打開(kāi))

    • 將下面代碼粘貼過(guò)去

      玩轉(zhuǎn)斗魚(yú)直播APP——請(qǐng)求展示推薦數(shù)據(jù)篇

    • 回到終端,執(zhí)行pod install --no-repo-update命令

      玩轉(zhuǎn)斗魚(yú)直播APP——請(qǐng)求展示推薦數(shù)據(jù)篇

    • 關(guān)閉程序,通過(guò)工作空間打開(kāi)項(xiàng)目

      玩轉(zhuǎn)斗魚(yú)直播APP——請(qǐng)求展示推薦數(shù)據(jù)篇

玩轉(zhuǎn)斗魚(yú)直播APP——請(qǐng)求展示推薦數(shù)據(jù)篇

工具類(lèi)的封裝

  • 在實(shí)際開(kāi)發(fā)中,為了不過(guò)于依賴(lài)某一個(gè)第三方框架,我們經(jīng)常會(huì)在使用的方式封裝到某一個(gè)工具類(lèi)中,以便于某天該框架不更新時(shí)不至于很多地方都需要修改。

    • 比如之前的ASIHTTPRequest就出現(xiàn)了不更新的情況

  • 因此,我們?cè)谑褂弥跋确庋b一個(gè)簡(jiǎn)單的工具類(lèi)。之后在其它任何地方發(fā)送網(wǎng)絡(luò)請(qǐng)求,都依賴(lài)于自己的工具類(lèi)。如果某一天該框架不再更新,我們希望更換框架,只修改工具類(lèi)中代碼即可。

  • 創(chuàng)建工具類(lèi):NetworkTools

    • 為工具類(lèi)提供類(lèi)方法,方便調(diào)用

    • 請(qǐng)求時(shí),需要傳入請(qǐng)求方式、地址(URL)、參數(shù)(parameters)、回調(diào)閉包

    • 在請(qǐng)求方法中,使用Alamofire發(fā)送網(wǎng)絡(luò)請(qǐng)求

玩轉(zhuǎn)斗魚(yú)直播APP——請(qǐng)求展示推薦數(shù)據(jù)篇

MVVM介紹

  • 前面環(huán)境配置完成后,我們要請(qǐng)求首頁(yè)數(shù)據(jù)。

  • 數(shù)據(jù)請(qǐng)求在哪里發(fā)送了?

MVC模式

  • Model-View-Controller是一個(gè)Apple官方推薦的權(quán)威范式。

    • 蘋(píng)果使用的MVC的定義是這么說(shuō)的:所有的對(duì)象都可以被歸類(lèi)為一個(gè)model,一個(gè)view,或是一個(gè)controller。

  • 那么把網(wǎng)絡(luò)代碼放哪里?

    • 我們知道,因?yàn)榭刂破魇且粋€(gè)大管家,那么不知道如何安放的代碼就放置在控制器中

    • 是的,傳統(tǒng)的MVC方式我們經(jīng)常這么做。

  • 該做法的弊端在哪里?

    • 由于大量的代碼被放進(jìn)view controller,導(dǎo)致控制器變的相當(dāng)臃腫。

    • 在iOS開(kāi)發(fā)中有的view controller里綿延成千上萬(wàn)行代碼的事并不是前所未見(jiàn)的

    • 厚重的View Controller很難維護(hù)(由于其龐大的規(guī)模);包含幾十個(gè)屬性,使他們的狀態(tài)難以管理;遵循許多協(xié)議(protocol),導(dǎo)致協(xié)議的響應(yīng)代碼和controller的邏輯代碼混淆在一起。

  • 那么究竟應(yīng)該放在哪里?

    • 顯然MVC的3大組件根本沒(méi)有適合放這些代碼的地方。

      玩轉(zhuǎn)斗魚(yú)直播APP——請(qǐng)求展示推薦數(shù)據(jù)篇

MVVM模式

  • MVVM來(lái)自微軟。和MVC很像,并且引入新的組件ViewModel

    • view model是一個(gè)放置用戶(hù)輸入驗(yàn)證邏輯,視圖顯示邏輯,發(fā)起網(wǎng)絡(luò)請(qǐng)求和其他各種各樣的代碼的極好的地方。

    • 由于展示邏輯放在了view model中(比如網(wǎng)絡(luò)請(qǐng)求、請(qǐng)求后的數(shù)據(jù)解析等等),視圖控制器本身就會(huì)不再臃腫。

  • 因此,該項(xiàng)目中的請(qǐng)求數(shù)據(jù),統(tǒng)一交給ViewModel管理。每一個(gè)控制器對(duì)應(yīng)一個(gè)屬于自己的ViewModel。

    玩轉(zhuǎn)斗魚(yú)直播APP——請(qǐng)求展示推薦數(shù)據(jù)篇

發(fā)送網(wǎng)絡(luò)請(qǐng)求

接口解析

  • 在推薦的數(shù)據(jù)展示中,有三個(gè)請(qǐng)求

    • 最熱數(shù)據(jù)請(qǐng)求

    • 顏值數(shù)據(jù)請(qǐng)求

    • 其它數(shù)據(jù)請(qǐng)求

  • 因此我們需要分別發(fā)送三個(gè)請(qǐng)求,并且當(dāng)所有的請(qǐng)求數(shù)據(jù)拿到之后,對(duì)數(shù)據(jù)進(jìn)行整理分組排序。(因?yàn)榻缑嬷杏杏玫椒纸M)

  • 因此請(qǐng)求分成五步曲

    • 請(qǐng)求游戲數(shù)據(jù),并且轉(zhuǎn)成模型對(duì)象

    • 請(qǐng)求顏值數(shù)據(jù),并且轉(zhuǎn)成模型對(duì)象

    • 請(qǐng)求熱門(mén)數(shù)據(jù),并且轉(zhuǎn)成模型對(duì)象

    • 對(duì)數(shù)據(jù)進(jìn)行整理,并且放入大的數(shù)組中

    • 將數(shù)據(jù)傳遞給外面控制器,展示數(shù)據(jù)

接口描述

  • 接口名稱(chēng):熱門(mén)數(shù)據(jù)(后面熱門(mén)游戲)

  • 接口地址:http://capi.douyucdn.cn/api/v1/getHotCate

  • 請(qǐng)求參數(shù):

參數(shù)名稱(chēng)參數(shù)說(shuō)明
time獲取當(dāng)前時(shí)間的字符串
limit獲取數(shù)據(jù)的個(gè)數(shù)
offset偏移的數(shù)據(jù)量
  • 接口名稱(chēng):顏值數(shù)據(jù)(第二組顏值數(shù)據(jù))

  • 接口地址:http://capi.douyucdn.cn/api/v1/getVerticalRoom

  • 請(qǐng)求參數(shù):

參數(shù)名稱(chēng)參數(shù)說(shuō)明
time獲取當(dāng)前時(shí)間的字符串
limit獲取數(shù)據(jù)的個(gè)數(shù)
offset偏移的數(shù)據(jù)量
  • 接口名稱(chēng):大數(shù)據(jù)數(shù)據(jù)(第一組熱門(mén)數(shù)據(jù))

  • 接口地址:http://capi.douyucdn.cn/api/v1/getbigDataRoom

  • 請(qǐng)求參數(shù):

參數(shù)名稱(chēng)參數(shù)說(shuō)明
time獲取當(dāng)前時(shí)間的字符串

玩轉(zhuǎn)斗魚(yú)直播APP——請(qǐng)求展示推薦數(shù)據(jù)篇
玩轉(zhuǎn)斗魚(yú)直播APP——請(qǐng)求展示推薦數(shù)據(jù)篇
玩轉(zhuǎn)斗魚(yú)直播APP——請(qǐng)求展示推薦數(shù)據(jù)篇

展示數(shù)據(jù)

普通數(shù)據(jù)展示(文本數(shù)據(jù))

  • 將數(shù)據(jù)回調(diào)給控制器后,控制器拿到數(shù)據(jù)展示數(shù)據(jù)即可

    • 將Cell中的控件拖入屬性

    • 定義模型對(duì)象

  • 在控制器中拿到模型,并且將模型傳入給Cell進(jìn)行展示

圖片數(shù)據(jù)展示

  • 在設(shè)置網(wǎng)絡(luò)圖片時(shí),OC中經(jīng)常使用SDWebImage框架。

  • 相同的原因,我們使用的Swift項(xiàng)目,因此這里我使用onevcat, 也就是喵神寫(xiě)的Kingfisher

  • 在Profile中加入框架, 并且執(zhí)行安裝命令

    • pod install —no-repo-update

玩轉(zhuǎn)斗魚(yú)直播APP——請(qǐng)求展示推薦數(shù)據(jù)篇

  • 使用代碼

玩轉(zhuǎn)斗魚(yú)直播APP——請(qǐng)求展示推薦數(shù)據(jù)篇

更多資訊歡迎登陸520it.com。小碼哥社區(qū),編程愛(ài)好者的家園。

(正文已結(jié)束)

推薦閱讀:智慧網(wǎng)

免責(zé)聲明及提醒:此文內(nèi)容為本網(wǎng)所轉(zhuǎn)載企業(yè)宣傳資訊,該相關(guān)信息僅為宣傳及傳遞更多信息之目的,不代表本網(wǎng)站觀(guān)點(diǎn),文章真實(shí)性請(qǐng)瀏覽者慎重核實(shí)!任何投資加盟均有風(fēng)險(xiǎn),提醒廣大民眾投資需謹(jǐn)慎!

網(wǎng)站簡(jiǎn)介 - 聯(lián)系我們 - 營(yíng)銷(xiāo)服務(wù) - XML地圖 - 版權(quán)聲明 - 網(wǎng)站地圖TXT
Copyright.2002-2019 寧夏資訊網(wǎng) 版權(quán)所有 本網(wǎng)拒絕一切非法行為 歡迎監(jiān)督舉報(bào) 如有錯(cuò)誤信息 歡迎糾正