在一个Viewcontrollers中,我有三个Alamofire API调用...我希望在三个API调用完成后将渐进视图的进度设置为100%?
PS:此外,有人可以教我如何为单个Alamofire API调用吗?
提前致谢。
答案 0 :(得分:1)
Alamofire
提供有关api进度状态状态的进度阻止,您可以使用它来显示您的请求或响应的进度,如下所示,单个api,
Alamofire.request("url", method: "httpMethod", parameters: "parameter", encoding: JSONEncoding.default, headers: "headers").downloadProgress(closure: { (progress) in
// Progress block called frequently during the lifecycle of api.
let fractionCompletedINpercentage = progress?.fractionCompleted * 100
}).validate().responseData(completionHandler: { (response) in
if response.result.isSuccess {
// Download success
} else if response.result.isFailure {
// Download failed
}
})
对于处理多个api,您可以对每个api使用Bool
,并通过从所有api进度中获得的最小或平均分数来显示您的进度。
由于
答案 1 :(得分:0)
下载进度可在Alamofire的文档
中找到let utilityQueue = DispatchQueue.global(qos: .utility)
Alamofire.download("https://httpbin.org/image/png")
.downloadProgress(queue: utilityQueue) { progress in
print("Download Progress: \(progress.fractionCompleted)")
}
.responseData { response in
if let data = response.result.value {
let image = UIImage(data: data)
}
}
也就是说,如果API响应被gzip压缩或者内容长度标题没有设置,它可能不起作用。
答案 2 :(得分:-1)
使用Alamofire的工作方法
let strURL:String = "https://xxxx"
let parameters: Parameters = ["keyword": "current_timestamp"]
Alamofire.request(strURL, method: .post, parameters: parameters, encoding: URLEncoding.default).responseJSON { (response) in
print(response.data!)
print(response.result)
if let JSON = response.result.value {
print("JSON: \(JSON)")
}
}