您好,欢迎来到知库网。
搜索
您的当前位置:首页OC转swift3.0 实践 (四)网络层实操

OC转swift3.0 实践 (四)网络层实操

来源:知库网
整体结构.png

现在我要拿到focusImages字典下的pic

接口返回的数据.png

一.类似的,学OC封装下网络请求的工具

二.新建一个swift文件,将所有的API请求写在该文件下

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不多说(我只取自己要的字段),两个model

import UIKit
import HandyJSON
struct ZLMSaleColumns: HandyJSON {
    var code: Int?
    var codeMessage: String?
    var type: String?
    var list:[ZLMSaleModel]?
    required init(){}
}

图片数组的model

import UIKit
import HandyJSON
struct ZLMSaleModel: HandyJSON {
    var pic :String?
    required init(){}
}

从上看出通过HandyJSON建立的model有个固定格式

import UIKit
import HandyJSON
struct model名:HandyJSON{
      ....
    你所需要的字段
      ....
required init(){}
}

四.最后一步在controller里的事

1.先导入两个库

import SwiftyJSON
import HandyJSON

2.新建两个model的对象

 var focusImagesColumns:ZLMSaleColumns!
    
 var listArr:Array<ZLMSaleModel?> = []{ didSet { setDataSource() } }

setDataSource()函数

  func setDataSource() {
        tableview.reloadData()
    }

3.在生命周期viewDidLoad()中调用获取Data数据的函数

  override func viewDidLoad() {
        super.viewDidLoad()
        view.backgroundColor = UIColor.white
        self.automaticallyAdjustsScrollViewInsets = true
        self.view.addSubview(tableview)
        refreshData()//获取数据
    }

refreshData()函数的实现

 func refreshData()  {
        ZLMSaleAPI.requestSaleData{[unowned self](result,error) in
            if error != nil{
                print(error as Any)//暂时做打印处理
            }else{
                let json = JSON(result as Any)//SwiftyJSON将获取到的数据解析成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中
            }
            
        }
    }

以上。

Copyright © 2019- zicool.com 版权所有 湘ICP备2023022495号-2

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务