搭建一個(gè)完整的swift項(xiàng)目

對(duì)于一個(gè) iOS 項(xiàng)目,在搭建項(xiàng)目的時(shí)候,使用的架構(gòu)為 MVVM 架構(gòu),需要考慮的有以下幾點(diǎn):

數(shù)據(jù)模型

網(wǎng)絡(luò)請(qǐng)求

緩存

代碼架構(gòu) - MVVM

圖片加載

工具類(lèi)

單元測(cè)試


一、MVVM架構(gòu)之RxSwift

首先說(shuō)一下框架,目前比較流行的是MVVM架構(gòu),在OC里,我們用的是ReactiveCocoa這個(gè),想必這個(gè)使用的人比較多,大家也比較熟悉。在swift里用的是RxSwift這個(gè),RxSwift就是ReactiveCocoa的swift版。

二、網(wǎng)絡(luò)請(qǐng)求

對(duì)于使用Objective-C的開(kāi)發(fā)者,一定非常熟悉AFNetworking這個(gè)網(wǎng)絡(luò)框架。在蘋(píng)果推出的Swift之后,AFNetworking的作者專門(mén)用Swift來(lái)編寫(xiě)一個(gè)類(lèi)似AFNetworking的網(wǎng)絡(luò)框架,稱為Alamofire。Alamofire地址 >>

三、數(shù)據(jù)模型轉(zhuǎn)換

在OC中,我們有很多優(yōu)秀的第三方庫(kù)幫助我們實(shí)現(xiàn),比如MJExtension、JSONModel等,這些庫(kù)基本都是利用runtime實(shí)現(xiàn)讀取屬性名并利用kvc重新賦值屬性。

在Swift中,由于runtime的局限,比較出名的有SwiftyJSON、ObjectMapper等。

那么,今天的主角 HandyJSON就出現(xiàn)了,這個(gè)庫(kù)是阿里一位大神推出的,能夠做到JSON轉(zhuǎn)Model一步到位,而且使用起來(lái),非常簡(jiǎn)潔方便。

關(guān)于HandyJSON原理:

摘自網(wǎng)上一段說(shuō)明如下:

HandyJSON另辟蹊徑,采用Swift反射+內(nèi)存賦值的方式來(lái)構(gòu)造Model實(shí)例,保持原汁原味的Swift類(lèi)定義。

四、網(wǎng)絡(luò)層的進(jìn)一步封裝

一般我們會(huì)在項(xiàng)目中添加一個(gè)網(wǎng)絡(luò)請(qǐng)求層,來(lái)管理網(wǎng)絡(luò)請(qǐng)求,一般會(huì)叫APIManager或者NetworkModel,但是這樣子還是會(huì)有一點(diǎn)不好:

這一層比較混亂,不好管理,混合了各種請(qǐng)求

不好做單元測(cè)試

但是Moya是專業(yè)處理這些問(wèn)題而生滴。Moya有以下優(yōu)點(diǎn):

定義了一個(gè)清晰的網(wǎng)絡(luò)結(jié)構(gòu)

更加簡(jiǎn)單地進(jìn)行網(wǎng)絡(luò)單元測(cè)試

Moya是作用在Alamofire之上,讓我們不再直接去使用Alamofire了,Moya也就可以看做我們的網(wǎng)絡(luò)管理層,只不過(guò)他擁有更好更清晰的網(wǎng)絡(luò)管理??梢钥吹较聢D,我們的APP直接操作Moya,讓Moya去管理請(qǐng)求,不在跟Alamofire進(jìn)行接觸

最后編輯于
?著作權(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)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 178,725評(píng)論 25 709
  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫(kù)、插件、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 15,035評(píng)論 4 61
  • 愛(ài)情到最后還是輸給了自己
    Magic潔兒閱讀 163評(píng)論 0 0

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