我需要一种方法来检查服务器是否在线。理想情况下,它只会返回 true/false。
我已经尝试过这个:
class func serverIsOnline() -> Bool{
let session = NSURLSession.sharedSession()
let urlString = "http://myserver.com"
let url = NSURL(string: urlString)
let request = NSURLRequest(URL: url!, cachePolicy: .ReloadIgnoringLocalAndRemoteCacheData, timeoutInterval: 3.0)
let dataTask = session.dataTaskWithRequest(request) { (data:NSData?, response:NSURLResponse?, error:NSError?) -> Void in
if let httpResponse = response as? NSHTTPURLResponse {
if httpResponse.statusCode == 200 {
//server online
return true
} else {
//server offline
return false
}
}
}
dataTask.resume()
}
当我尝试返回 true/false 时,出现以下错误:
Unexpected non-void return value in void function
如何修改此函数以便我可以检查我的服务器是否在线并返回 true/false ?
最佳答案
你的方法有问题
- 它是异步的
- 您的闭包无法返回任何内容,它是
Void
。
要修复此问题,您必须使调用同步,并将响应存储在 Bool
中,以便在闭包完成后可以返回它。使 dataTaskWithRequestHandler
同步,例如 this 。在顶部声明一个变量,如 reachable
并在闭包内将其设置为 true 或 false,然后在任务完成后返回它。
关于swift - 检查服务器是否在线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37122421/