搭建一個完整的swift項目

對于一個 iOS 項目,在搭建項目的時候,使用的架構(gòu)為 MVVM 架構(gòu),需要考慮的有以下幾點:

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

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

緩存

代碼架構(gòu) - MVVM

圖片加載

工具類

單元測試


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

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

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

對于使用Objective-C的開發(fā)者,一定非常熟悉AFNetworking這個網(wǎng)絡(luò)框架。在蘋果推出的Swift之后,AFNetworking的作者專門用Swift來編寫一個類似AFNetworking的網(wǎng)絡(luò)框架,稱為Alamofire。Alamofire地址 >>

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

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

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

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

關(guān)于HandyJSON原理:

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

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

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

一般我們會在項目中添加一個網(wǎng)絡(luò)請求層,來管理網(wǎng)絡(luò)請求,一般會叫APIManager或者NetworkModel,但是這樣子還是會有一點不好:

這一層比較混亂,不好管理,混合了各種請求

不好做單元測試

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

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

更加簡單地進行網(wǎng)絡(luò)單元測試

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

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

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

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