取消Alamofire.request无法正常工作(Swift)

时间:2016-11-04 17:54:01

标签: swift request alamofire

我有一个功能,通过Alamofire请求将base64中的字符串上传到服务器,并希望用户能够取消上传。

我目前正在尝试.cancel(),但我想我正在接近这种方法,因为它没有取消所提出的请求。

代码:

var uploadVerificateRequest: Alamofire.Request?

func uploadVerificate(_ pdf: Data, completionHandler: @escaping (_ result: [String: AnyObject]) -> ()) {
    var jsonData: [String: AnyObject]?

    let PDFBase64 = pdf.base64EncodedString()

    let verificateParameters = [
        "Base64Image": PDFBase64
    ] as [String : Any]

    self.uploadVerificateRequest = Alamofire.request(URL, method: .post, parameters: verificateParameters)
        .responseJSON { (response) -> Void in

            if let value = response.result.value {
                let json = value as! [String: AnyObject]

                jsonData = json

                if let jsonData = jsonData {
                    completionHandler(jsonData)
                }
                else {
                    completionHandler([:])
                }
            }
    }
}

func cancelUploadVerificate() {
    self.uploadVerificateRequest?.cancel()
}

有什么建议吗?

3 个答案:

答案 0 :(得分:3)

找到一个似乎在经过一些测试后可以工作的解决方案:

RssListPresenter

答案 1 :(得分:0)

在任务上调用取消:

.top

答案 2 :(得分:0)

我认为你应该尝试这样的事情:

self.uploadVerificateRequest = Alamofire.request(URL, method: .post, parameters: verificateParameters)
self.uploadVerificateRequest.responseJSON { (response) -> Void in

        if let value = response.result.value {
            let json = value as! [String: AnyObject]

            jsonData = json

            if let jsonData = jsonData {
                completionHandler(jsonData)
            }
            else {
                completionHandler([:])
            }
        }
}