分别是:
Alamofire :swift版本的网络请求sdk,是AFNetworking研发团队研发的swift版网络请求工具类
SwiftyJSON:当然就是用来解析json数据的咯
Kingfisher: 是用来显示网络图片的与oc中的SDWebImage类似
HandyJSON: 可将json转模型
上代码:
实现的效果图:
image
Alamofire的使用:
get请求
func getRequest(urlString:String, params :Parameters? =nil, success :@escaping(_response : [String:AnyObject])->(), failture :@escaping(_error :Error)->()) { //使用Alamofire进行网络请求时,调用该方法的参数都是通过getRequest(urlString, params, success :, failture :)传入的,而success传入的其实是一个接受 [String : AnyObject]类型 返回void类型的函数 Alamofire.request(urlString, method: .get, parameters: params) .responseJSON{ (response)in/*这里使用了闭包*/ //当请求后response是我们自定义的,这个变量用于接受服务器响应的信息 //使用switch判断请求是否成功,也就是response的result switchresponse.result{ case.success(letvalue): //当响应成功是,使用临时变量value接受服务器返回的信息并判断是否为[String: AnyObject]类型 如果是那么将其传给其定义方法中的success // if let value = response.result.value as? [String: AnyObject] { success(valueas! [String:AnyObject]) // } // let json = JSON(value) // print(json) case.failure(leterror): failture(error) print("error:\(error)") } } }
post请求
funcpostRequest(urlString :String, params :Parameters? =nil, success :@escaping(_response : [String:AnyObject])->(), failture :@escaping(_error :Error)->()) { Alamofire.request(urlString, method:HTTPMethod.post, parameters: params).responseJSON{ (response)in switchresponse.result{ case.success: ifletvalue = response.result.valueas? [String:AnyObject] { success(value) } case.failure(leterror): failture(error) print("error:\(error)") } } }
上传图片或文件
func upLoadImageRequest(urlString :String, params:[String:String], data: [Data], name: [String],success :@escaping(_response : [String:AnyObject])->(), failture :@escaping(_error :Error)->()){ let headers = ["content-type":"multipart/form-data"] Alamofire.upload( multipartFormData: { multipartFormDatain //666多张图片上传 // 拼接参数 for(key,_)in params { letvalue = params[key] multipartFormData.append((value?.data(using:String.Encoding.utf8)!)!, withName: key) } for I in 0..<data.count{ // 在线文件类型对照表http://tool.oschina.net/commons multipartFormData.append(data[i], withName:"file", fileName: name[i], mimeType:"image/jpg") } },to: urlString, headers: headers, encodingCompletion: { encodingResultin switchencodingResult { case.success(letupload,_,_): upload.responseJSON{ responsein ifletvalue = response.result.valueas? [String:AnyObject]{ success(value) } } case.failure(letencodingError): print(encodingError) failture(encodingError) } } ) }
SwiftyJSON使用:
JSON(json)使用到了Swiftjson
image
Kingfisher的简单使用
cell.iconImageView.kf.setImage(with:URL(string: model.iconUrl))*
HandyJSON的使用
创建结构体模型
image.png
给模型赋值
//解析数据 let json = JSON(respont) print(json) if let advertList = JSONDeserializer<HomeModel>.deserializeFrom(json: json.description) { // 从字符串转换为对象实例 }