Alamofire 5 获取错误代码以检查互联网连接
Posted
技术标签:
【中文标题】Alamofire 5 获取错误代码以检查互联网连接【英文标题】:Alamofire 5 get error code to check internet connection 【发布时间】:2020-02-18 12:56:30 【问题描述】:我将 Alamofire 5 用于我的网络层,我已将网络错误定义如下。
我正在检查 response.error.isNetworkError
我总是错误,因为现在我得到的代码是 9 而不是 -1099/
extension Error
var code: Int return (self as NSError).code
var domain: String return (self as NSError).domain
var isNetworkError: Bool
switch code
case NSURLErrorCannotFindHost,
NSURLErrorDNSLookupFailed,
NSURLErrorDataNotAllowed,
NSURLErrorNetworkConnectionLost,
NSURLErrorNotConnectedToInternet:
return true
default:
return false
【问题讨论】:
【参考方案1】:可能会对某人有所帮助。使用新的 Alamofire 5 AFError 可以转换为 NSError。所以,如果你只是需要一个代码,你可以这样做
if let nsError = error as NSError?
nsError.code
...
如果您需要检查互联网连接。您可以检查某些特定的错误类型,例如:
if let afError = error?.asAFError
if afError.isSessionTaskError
...
最后,如果你需要得到 URLError,这可以从底层错误中实现,你应该这样做
if let afError = error?.asAFError
if let urlError = afError.underlyingError as! URLError?, urlError.code == URLError.notConnectedToInternet
...
【讨论】:
【参考方案2】:你可以像这样得到 Http 错误:
guard let error = (response.error?.underlyingError as? URLError) else return
switch error.code
case .timedOut:
// Do SomeThing
case .notConnectedToInternet:
// Do SomeThing
default:
break
【讨论】:
【参考方案3】:(afError.underlyingError as? NSError)?.errorCode == NSURLErrorNotConnectedToInternet
这应该可以工作
【讨论】:
以上是关于Alamofire 5 获取错误代码以检查互联网连接的主要内容,如果未能解决你的问题,请参考以下文章
尝试使用 Alamofire 检查 iOS 设备上的互联网连接