我使用Alamofire
发送下载请求。我正在处理Success
和Failure
个案件,如下所示。
Alamofire.request {
case Success:
// Update UI
case Failure:
// Show Alert message (error!.localizedDescription)
}
一切都很好。
当我回去时,在viewWillDisappear
,我取消任何正在进行的请求。问题是,取消请求会抛出错误消息,并在我不在该屏幕时触发警报。
据我所知,我可以采取两项行动。
viewController
是否还活着Bool
中设置viewWillDisappear
变量,这是一个简单的解决方案如何处理这种情况?
另外如何检查第1点和第1点2?
答案 0 :(得分:6)
这是一种更通用的方法,适用于任何设备语言:
Swift 4
if (response.error as NSError?)?.code == NSURLErrorCancelled {
// Do Your stuff
}
答案 1 :(得分:1)
如果你能够了解它失败的原因,你应该这样做,所以:UIViewController
。
选项2很脆弱,因为你依赖于{{1}}的生命周期。选项3只会通过新标志使您的逻辑更加繁琐。保持简单
答案 2 :(得分:1)
注意:使用aumanets
答案进行故障安全检查
对于想知道如何使用选项1的人来说
您可以检查请求已取消错误以查找请求是否已取消
let errorDict = (error as NSError).userInfo;
if let errorString = errorDict["NSLocalizedDescription"] as? String, errorString == "cancelled" {
// Request is cancelled.
}
这个答案来自@ peres的答案。
答案 3 :(得分:0)
现在应该:
var isCancelError: Bool {
guard let afError = self as? AFError else { return false }
return afError.isExplicitlyCancelledError
}