今天接上篇文章OC轉(zhuǎn)swift3.0實(shí)戰(zhàn) (三)網(wǎng)絡(luò)層初探谬返,廢話不多說,直接干光涂。
先看下接口返回的整體數(shù)據(jù),
現(xiàn)在我要拿到focusImages
字典下的pic
一.類似的拧烦,學(xué)OC封裝下網(wǎng)絡(luò)請(qǐng)求的工具
詳細(xì)的見本人的另一篇文章Swift3.0系列之基于Alamofire4.0網(wǎng)絡(luò)層封裝
二.新建一個(gè)swift文件忘闻,將所有的API請(qǐng)求寫在該文件下
import UIKit
let saleAPI = "xxxxxxxxxxx?channel=ios-b1&device=iPhone&includeActivity=true&includeSpecial=true&scale=2&version=5.4.21"
class ZLMSaleAPI: NSObject {
class func requestSaleData(_ finished:@escaping (_ result:AnyObject? ,_ error:NSError?)->()){
NetworkTools.shareInstance.requestData(methodType: .GET, urlStr: saleAPI, parameters: nil){
(result,error)in
finished(result,error)
}
}
}
三.這里建model不多說(我只取自己要的字段),兩個(gè)model
import UIKit
import HandyJSON
struct ZLMSaleColumns: HandyJSON {
var code: Int?
var codeMessage: String?
var type: String?
var list:[ZLMSaleModel]?
required init(){}
}
圖片數(shù)組的model
import UIKit
import HandyJSON
struct ZLMSaleModel: HandyJSON {
var pic :String?
required init(){}
}
從上看出通過HandyJSON建立的model有個(gè)固定格式
import UIKit
import HandyJSON
struct model名:HandyJSON{
....
你所需要的字段
....
required init(){}
}
四.最后一步在controller里的事
1.先導(dǎo)入兩個(gè)庫(kù)
import SwiftyJSON
import HandyJSON
2.新建兩個(gè)model的對(duì)象
var focusImagesColumns:ZLMSaleColumns!
var listArr:Array<ZLMSaleModel?> = []{ didSet { setDataSource() } }
setDataSource()函數(shù)
func setDataSource() {
tableview.reloadData()
}
3.在生命周期viewDidLoad()中調(diào)用獲取Data數(shù)據(jù)的函數(shù)
override func viewDidLoad() {
super.viewDidLoad()
view.backgroundColor = UIColor.white
self.automaticallyAdjustsScrollViewInsets = true
self.view.addSubview(tableview)
refreshData()//獲取數(shù)據(jù)
}
refreshData()函數(shù)的實(shí)現(xiàn)
func refreshData() {
ZLMSaleAPI.requestSaleData{[unowned self](result,error) in
if error != nil{
print(error as Any)//暫時(shí)做打印處理
}else{
let json = JSON(result as Any)//SwiftyJSON將獲取到的數(shù)據(jù)解析成json
let focusImagesColumns = JSONDeserializer<ZLMSaleColumns>.deserializeFrom(json:json["focusImages"].description)//HandyJSON將其映射到BaseModel中去
self.focusImagesColumns = focusImagesColumns
let listArray = self.focusImagesColumns.list
self.listArr = listArray!//將focusImages下的list映射到pic所在的model中
}
}
}
以上恋博。