Исправление устаревания NSURLConnection от Swift 1.2 до 2.0
У меня есть функция, написанная на Swift 1.2, которая проверяет доступность адреса или IP. Вот :
func isHostConnected(hostAddress : String) -> Bool
{
var response : NSURLResponse?
let request = NSMutableURLRequest(URL: NSURL(string: hostAddress)!)
request.timeoutInterval = 3
let data = NSURLConnection.sendSynchronousRequest(request, returningResponse: &response, error: nil)
return ((response as? NSHTTPURLResponse)!.statusCode == 200)
}
Теперь,NSURLConnection
устарела, согласно предложению XCode, я попытался написать это, используяNSURLSession.dataTaskWithRequest
, вот :
func isHostConnected(hostAddress : String) -> Bool
{
let request = NSMutableURLRequest(URL: NSURL(string: hostAddress.stringByAddingPercentEscapesUsingEncoding(NSUTF8StringEncoding)!)!)
request.timeoutInterval = 3
let session = NSURLSession(configuration: NSURLSessionConfiguration.defaultSessionConfiguration(), delegate: nil, delegateQueue: NSOperationQueue.mainQueue())
var responseCode = -1
session.dataTaskWithRequest(request, completionHandler: {(data : NSData?, response : NSURLResponse?, error : NSError?) -> Void in
responseCode = (response as? NSHTTPURLResponse)!.statusCode
})!.resume()
return (responseCode == 200)
}
Выше код всегда возвращаетсяложный (очевидно), так какcompletionHandler
исполняется в отдельной теме.
Меня беспокоит то, могу ли я сделатьcompletionHandler()
запустить на MainThread как-то такsendSynchronousRequest
делает, блокируя это.
У меня есть причины не использовать «Apple's Reachabilty» здесь.
Любое предложение будет полезно. :)