ios-公司項(xiàng)目實(shí)戰(zhàn)中的網(wǎng)絡(luò)請(qǐng)求

剖析一下ios中的網(wǎng)絡(luò)請(qǐng)求,直接拿公司的項(xiàng)目說(shuō)吧

1.首先要理清你要請(qǐng)求到哪些東西,需要哪些參數(shù),這些參數(shù)你要在哪兒拿到值;


Snip20160728_2.png

看一下這個(gè)接口文檔,uuid是通用唯一識(shí)別碼;是用來(lái)識(shí)別設(shè)備的。classListInfo表示是我想要請(qǐng)求回什么數(shù)據(jù)。channel是區(qū)別是ios還是安卓請(qǐng)求的。version:表示版本號(hào),這些東西都是照著開(kāi)發(fā)文檔挨個(gè)填寫(xiě)過(guò)去的。下面的字典才是最重要的。通俗點(diǎn)將上面的參數(shù)是常量,字典里面的鍵值對(duì)是變量,根據(jù)鍵值對(duì)里面鍵對(duì)應(yīng)不同的值從而請(qǐng)求回不同的數(shù)據(jù)。
2.數(shù)據(jù)請(qǐng)求
公司的項(xiàng)目一般網(wǎng)絡(luò)請(qǐng)求都會(huì)封裝在一個(gè)網(wǎng)絡(luò)請(qǐng)求的工具類里面(當(dāng)然除了二班的);然后把這個(gè)工具類的頭文件在pch文件里面導(dǎo)入,在.h文件里面甩一個(gè)接口讓外面調(diào)用(老司機(jī)都懂得),我下面貼出來(lái)的圖片當(dāng)然只有這個(gè)接口的請(qǐng)求方法,

Snip20160728_8.png
Snip20160728_7.png

這里QZLRequest是封裝了一層方法,說(shuō)白了就是用來(lái)放那些雜七雜八的請(qǐng)求參數(shù),下面貼出這個(gè)類的方法,這個(gè)類是可移植的,下面是這個(gè)類的封裝,另外說(shuō)一下(YTKRequest)YTKNetwork 的基本的思想是把每一個(gè)網(wǎng)絡(luò)請(qǐng)求封裝成對(duì)象。你的每一種請(qǐng)求都需要繼承 YTKRequest類,通過(guò)覆蓋父類的一些方法來(lái)構(gòu)造指定的網(wǎng)絡(luò)請(qǐng)求。把每一個(gè)網(wǎng)絡(luò)請(qǐng)求封裝成對(duì)象其實(shí)是使用了設(shè)計(jì)模式中的 Command 模式

Snip20160728_9.png

接下來(lái)我們就可以在對(duì)應(yīng)的控制器里面去請(qǐng)求數(shù)據(jù)了

Snip20160728_12.png

這是對(duì)應(yīng)控制器里面數(shù)據(jù)請(qǐng)求的請(qǐng)求方法,paramsDic字典是請(qǐng)求參數(shù),還有一些什么版本號(hào)啊那些參數(shù)都是在網(wǎng)絡(luò)請(qǐng)求的工具類里面的方法已經(jīng)定義好了。


Snip20160728_11.png

3,數(shù)據(jù)請(qǐng)求回來(lái)的之后進(jìn)行數(shù)據(jù)解析
這里要說(shuō)一下,因?yàn)槭情_(kāi)的異步線程,所以你如果定一個(gè)全局變量在網(wǎng)絡(luò)請(qǐng)求回來(lái)后的進(jìn)行數(shù)據(jù)賦值,你然后在主線程中打印,你會(huì)發(fā)現(xiàn),這個(gè)全局變量是空值,考慮整個(gè)邏輯,感覺(jué)一切都順理成章,我用一個(gè)很形象的比喻:如果異步線程所消耗的時(shí)間是十秒;而你主線程的執(zhí)行時(shí)間是1秒,那么在主線程中不斷打印,全局變量里面怎么可能有值,所以解決方法就是重寫(xiě)set方法;然后你再set方面打印就會(huì)發(fā)現(xiàn)有值??。不扯了,還是看一下請(qǐng)求回來(lái)的數(shù)據(jù)吧,數(shù)組里面包含了多個(gè)字典數(shù)據(jù)(其實(shí)只有一個(gè)字典數(shù)據(jù),不過(guò)一樣啦),因?yàn)槲覀円脭?shù)組里面每一條字典里面的數(shù)據(jù)(打個(gè)形象的比方,我們需要?jiǎng)兤?,第一層需要?jiǎng)冮_(kāi)數(shù)組的皮,第二層需要?jiǎng)冮_(kāi)字典的皮,O(∩∩)O哈哈~??這個(gè)比喻恰當(dāng)不恰當(dāng)),所以要?jiǎng)?chuàng)建兩個(gè)model,第一層使用來(lái)解析數(shù)組,第二層是用來(lái)解析字典的。字典轉(zhuǎn)模型當(dāng)然需要用到杰神的框架MJExtension;將解析得到的數(shù)組模型遍歷出字典模型,然后用一個(gè)全局的可變數(shù)組去接收這些字典模型(注意要懶加載);然后將這個(gè)可變數(shù)組傳到view;view界面重寫(xiě)set方法接收這些數(shù)據(jù);其他就是對(duì)屬性賦值了。

Snip20160728_5.png

這就是效果,點(diǎn)擊日期刷新共用的tableview的cell數(shù)據(jù)。(體諒一下博主,碼字不容易,關(guān)注點(diǎn)一波,O(∩
∩)O謝謝??)。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容