通過API獲取到的數據.png
如上圖是此次的效果圖,在這先聲明,此次的數據是從API那邊獲取再渲染上去的,并不是像OC轉swift3.0實戰 (二)使用自定義cell的tableview那樣直接把數據寫死,畢竟二那邊只是UI,今天要說的網絡層是在二的基礎上繼續的下一步,下面進入正題。
首先,我們會想到OC有幾個強大的第三方庫,
網絡請求AFNetworking
,JSON處理用JSONModel,YYModel,MJExtension等
,我有幾個朋友換了公司,項目用Swift,但里面還是通過橋文件用的AFNetworking ,這我聽著都尷尬,搞得我強迫癥都犯了。后來查詢了下資料,發現對于Swift的網絡請求,AFNetworking的“爸爸”也早就給他搞了個弟弟——Alamofire,沒錯,兩個庫都是出自同一個人之手。
對于JSON處理方面,在Swift界有個大名鼎鼎的庫SwiftyJSON,但是這個庫也不是那么完美,原因如下:
1.SwiftyJSON 可以不建Model
,無限得用JSON["xxx"]["yyy"]["zzz"]......
,這對于后臺返回的JSON數據少的話也許是件好事,但如果后臺返回的數據一層套一層呢?字典里面有數組,數組里面又有字典.....想想也是酸爽,而且這樣對于日后不管是自己維護還是他人接手,都是一件相當蛋疼的問題,誰也不能保證后臺的數據結構發生變化,代碼的可讀性也是很重要的。
2.既然不建Model不怎么合適,那我建一個不就行了嗎?不好意思!SwiftyJSON只能幫你解析成json數據,但它還不能幫你自動映射到Model中去
那么接下來該怎么辦呢?
不急,Model肯定是要建的,現在的問題是找一個能幫SwiftyJSON
忙的,幫它把解析出來的json數據映射到Model中去。那么 HandyJSON就登場了。它就是來幫SwiftyJSON忙的。關于它的的用法和身世啥的可以參考這篇文章。
最后,我給出了一套適合自己的網絡層套餐
Alamofire+ SwiftyJSON+ HandyJSON,
關于具體在項目中怎么結合使用,請看OC轉swift3.0實戰 (四)網絡層實操