Swift 3 Alamofire 请求进度

Posted

技术标签:

【中文标题】Swift 3 Alamofire 请求进度【英文标题】:Swift 3 Alamofire Request Progress 【发布时间】:2018-09-06 10:42:52 【问题描述】:

我有这种代码

let req = Alamofire.request(url, method: .post, parameters: parameters, encoding: JSONEncoding.default, headers: headers)
    req.downloadProgress  (progress) in
        print("progess!", Float(req.progress.fractionCompleted))
    

    req.responseJSON  response in
        if response.result.isSuccess 
            print(response.result.value!)
        
        else 
            print(response.result.error!)
        
    

结果没有给我进步。它只是返回1.0,就是这样,但我需要这个请求的进度。

请有人帮助我。

【问题讨论】:

你想显示上传进度吗? @MaheshDangar 是的 那么你附加的 multipartFormData 在哪里? 看看这篇文章,这将有助于实现你想要的:- ***.com/questions/38888559/… 【参考方案1】:

您在使用req.progress.fractionCompleted 时犯了一个错误。请改用progress.fractionCompleted

let req = Alamofire.request(url, method: .post, parameters: parameters, encoding: JSONEncoding.default, headers: headers)
    req.downloadProgress  (progress) in
        print("progess!", Float(progress.fractionCompleted))
    

    req.responseJSON  response in
        if response.result.isSuccess 
            print(response.result.value!)
        
        else 
            print(response.result.error!)
        
    

【讨论】:

【参考方案2】:

在主队列中添加进度

request?.downloadProgress(queue: .main,closure: progress in
        self.downloadProcess.text = "Download \((progress.fractionCompleted*100))% completed"
        print(self.downloadProcess.text)
        if #available(ios 11.0, *) 

         else 
            // Fallback on earlier versions
        

    )

【讨论】:

以上是关于Swift 3 Alamofire 请求进度的主要内容,如果未能解决你的问题,请参考以下文章

如何在 swift4 中使用 Rxalamofire 发送 URL 请求

Alamofire 4/Swift:进度处理程序不再提供 bytesRead 和 totalBytesRead?

POST 请求 Swift 3.0 Alamofire

Swift 3 - 不能使用数组提出的 Alamofire 请求

带有 XML 响应和正文的 SOAP 请求 swift 3,Alamofire

带参数的 Alamofire 4 Swift 3 GET 请求