分别是:
Alamofire :swift版本的网络请求sdk,是AFNetworking研发团队研发的swift版网络请求工具类
SwiftyJSON:当然就是用来解析json数据的咯
Kingfisher: 是用来显示网络图片的与oc中的SDWebImage类似
HandyJSON: 可将json转模型
上代码:
实现的效果图:
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
Kingfisher的简单使用
cell.iconImageView.kf.setImage(with:URL(string: model.iconUrl))*
HandyJSON的使用
创建结构体模型
给模型赋值
//解析数据
let json = JSON(respont)
print(json)
if let advertList = JSONDeserializer<HomeModel>.deserializeFrom(json: json.description) { // 从字符串转换为对象实例
}