This question already has answers here:
How can I get the Data from NSURLSession.sharedSession().dataTaskWithRequest
(2个答案)
Returning data from async call in Swift function
(12个答案)
3年前关闭。
我需要一种方法来检查服务器是否在线。理想情况下,它将只返回true / false。
我已经试过了:
当我尝试返回true / false时,出现以下错误:
void函数中非预期的非无效返回值
如何修改此功能,以便可以检查服务器是否在线并返回true / false?
(2个答案)
Returning data from async call in Swift function
(12个答案)
3年前关闭。
我需要一种方法来检查服务器是否在线。理想情况下,它将只返回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时,出现以下错误:
void函数中非预期的非无效返回值
如何修改此功能,以便可以检查服务器是否在线并返回true / false?
最佳答案
您方法的问题是
不同步
您的闭包不能返回任何内容,它是Void
。
要修复它,您必须使调用同步,并将响应存储在Bool
中,以便在关闭完成后可以将其返回。使dataTaskWithRequestHandler
同步,例如this。在顶部声明一个变量,如reachable
并将其在闭包内部设置为true或false,然后在任务完成后将其返回。
关于swift - 检查服务器是否在线,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37122421/
10-15 12:39