iOS Swift : 如何查找 NSURLSession 是否超时
iOS Swift : How to find if an NSURLSession has timed out
在我目前正在构建的 iOS 应用程序中,我试图在会话超时时向用户显示一条消息。我阅读了 NSURLSessionDelegate
的文档,但找不到任何方法让我知道会话是否超时。我该怎么做呢?任何帮助表示赞赏。
您可以这样调用方法:
let request = NSURLRequest(URL: NSURL(string: "https://evgenii.com/")!)
let task = NSURLSession.sharedSession().dataTaskWithRequest(request) { (data, response, error) in
if error != nil {
if error?.code == NSURLErrorTimedOut {
println("Time Out")
//Call your method here.
}
} else {
println("NO ERROR")
}
}
task.resume()
我正在使用以下 Swift extension
检查错误是超时还是其他网络错误,使用 Swift 4
extension Error {
var isConnectivityError: Bool {
// let code = self._code || Can safely bridged to NSError, avoid using _ members
let code = (self as NSError).code
if (code == NSURLErrorTimedOut) {
return true // time-out
}
if (self._domain != NSURLErrorDomain) {
return false // Cannot be a NSURLConnection error
}
switch (code) {
case NSURLErrorNotConnectedToInternet, NSURLErrorNetworkConnectionLost, NSURLErrorCannotConnectToHost:
return true
default:
return false
}
}
}
在我目前正在构建的 iOS 应用程序中,我试图在会话超时时向用户显示一条消息。我阅读了 NSURLSessionDelegate
的文档,但找不到任何方法让我知道会话是否超时。我该怎么做呢?任何帮助表示赞赏。
您可以这样调用方法:
let request = NSURLRequest(URL: NSURL(string: "https://evgenii.com/")!)
let task = NSURLSession.sharedSession().dataTaskWithRequest(request) { (data, response, error) in
if error != nil {
if error?.code == NSURLErrorTimedOut {
println("Time Out")
//Call your method here.
}
} else {
println("NO ERROR")
}
}
task.resume()
我正在使用以下 Swift extension
检查错误是超时还是其他网络错误,使用 Swift 4
extension Error {
var isConnectivityError: Bool {
// let code = self._code || Can safely bridged to NSError, avoid using _ members
let code = (self as NSError).code
if (code == NSURLErrorTimedOut) {
return true // time-out
}
if (self._domain != NSURLErrorDomain) {
return false // Cannot be a NSURLConnection error
}
switch (code) {
case NSURLErrorNotConnectedToInternet, NSURLErrorNetworkConnectionLost, NSURLErrorCannotConnectToHost:
return true
default:
return false
}
}
}