在DeviceNumberRequestable.swift文件中:
import Foundation
//请求结果
enum DeviceNumberRequestResult<T>{
case success<T>
case failure(Error)
}
//模型遵循Codable协议
struct DeviceNumberRequestModel: Codable{
var StationNumber : Int = 0
var DeviceType : Int = 0
}
//请求参数
struct DeviceNumberTargetType : NetworkTargetType{
var storeID : String
var baseURL : URL? {
return URL(string: BaseeUrl)
}
var path:String {
return "/express/load/source1/\(storeID)"
}
var httpMethod: NetworkMethod {
return .get
}
var task: NetworkTask {
return .requestPlain //没有参数的网络请求
}
var headers: [NetworkHTTPHeaders]?{
return [CUTicket()]
}
}
//发送请求
protocol DeviceNumberRequestable {}
extension DeviceNumberRequestable {
func load(stordID : String , completion : @escaping (DeviceNumberRequestResult<[(index : Int , deviceModels : [SelectDeivceModel])]>) -> Void) -> Void {
Network<DeviceNumberTargetType>.request(DeviceNumberTargetType(storeID: stordID)) { (result) in
switch result {
case let .success(response):
if let models = response.toModel([DeviceNumberRequestModel].self) {
--------------------------------------------------------
这里面的内容根据你的数据结构 model来写,下面是我的例子
var turples : [(index : Int , deviceModels : [SelectDeivceModel])] = []
(0...9).forEach{ index in
turples.append((index: index == 0 ? 1 : index * 100, deviceModels: (0...99).map{
let stationNumber = index * 100 + $0
let selectDeivceModel = SelectDeivceModel(stationNumber: stationNumber)
for model in models where model.StationNumber == stationNumber {
selectDeivceModel.isSelected = true
selectDeivceModel.deviceType = model.DeviceType
break
}
return selectDeivceModel
}))
}
--------------------------------------------------------
completion(.success(turples))
}else {
completion(.failure(NSError(domain: "转换失败", code: 911, userInfo: nil)))
}
case let .failure(error):
completion(.failure(error))
}
}
}
}
//调用
terminalNumberText.shouldBeiginEditHandler = { [unowned self] in
guard let storeID = PalauDefaults.storeID.value else {
return false
}
self.load(stordID: storeID, completion: {[weak self] (result) in
guard let `self` = self else { return }
switch result {
case .success(let models):
print(models)
let deviceNumSelectedView = Bundle.main.loadNibNamed("DeviceNumSelectedView", owner: self, options: nil)?.first as! DeviceNumSelectedView
deviceNumSelectedView.center = self.view.center
deviceNumSelectedView.frame = CGRect(x: 20, y: 20, width: self.view.bounds.width - 40, height: self.view.bounds.height - 40)
deviceNumSelectedView.getCurrentNumBlock = { [weak self] d in
self?.terminalNumberText.originText = (d < 10) ? "00\(d)" : (d < 100 ? "0\(d)" : "\(d)")
self?.view.removerCover()
}
self.view.addSubViewWithCover(deviceNumSelectedView, blur: true, addColseBtn: false, canDisappare: false, closeBeforeHandle: nil)
deviceNumSelectedView.datas = models
case .failure(let error):
print(error)
Utility.showNoticeAlertView(("Get DeviceNumer Failed",NSLocalizedString2("\(error.localizedDescription)", comment:"")))
}
})
return true
}