在swift中为多个Alamofire调用设置渐进视图

时间:2017-06-22 03:33:16

标签: ios swift alamofire

在一个Viewcontrollers中,我有三个Alamofire API调用...我希望在三个API调用完成后将渐进视图的进度设置为100%?

PS:此外,有人可以教我如何为单个Alamofire API调用吗?

提前致谢。

3 个答案:

答案 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)")
                    }
    }