【发布时间】:2017-03-18 15:50:52
【问题描述】:
我有一个函数,它通过 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()
}
有什么建议吗?
【问题讨论】:
-
另一件事,在调用 cancel() 后打印 self.uploadVerificateRequest.task 时,我在控制台中收到 "<__nscflocaldatatask:>{ taskIdentifier: 8 } { canceling }",所以 cancel()调用本身似乎有效,但请求仍在运行。