2016-10-21 4 views
-1

Я новичок в этом и не могу понять, как использовать NSURLSession dataTaskWithResult:completion handler, заменяя NSURLConnection.sendSynchronusRequest(request as URLRequest, returning: &response в следующем коде. Последний был обесценен.Достижимость в Swift 3

public class Reachability { 
    class func isConnectedToNetwork() -> Bool { 
     var status:Bool = false 

     let url = NSURL(string: "https://google.com") 
     let request = NSMutableURLRequest(url: url! as URL) 
     request.httpMethod = "HEAD" 
     request.cachePolicy = NSURLRequest.CachePolicy.reloadIgnoringLocalAndRemoteCacheData 
     request.timeoutInterval = 10.0 

     var response:URLResponse? 

     do { 
      let _ = try NSURLConnection.sendSynchronousRequest(request as URLRequest, returning: &response) as NSData? 
     } 
     catch let error as NSError { 
      print(error.localizedDescription) 
     } 

     if let httpResponse = response as? HTTPURLResponse { 
      if httpResponse.statusCode == 200 { 
       status = true 
      } 
     } 
     return status 
    } 
} 

ответ

2

Простое решение с обработчиком завершения

class func isConnectedToNetwork(completion: @escaping (Bool) ->()) { 
    let url = URL(string: "https://google.com")! 
    var request = URLRequest(url: url) 
    request.httpMethod = "HEAD" 
    request.cachePolicy = .reloadIgnoringLocalAndRemoteCacheData 
    request.timeoutInterval = 10.0 

    URLSession.shared.dataTask(with:request) { (data, response, error) in 
     if let httpResponse = response as? HTTPURLResponse, httpResponse.statusCode == 200 { 
     completion(true) 
     } else { 
     completion(false) 
     } 
    }.resume() 
} 

И называть

Reachability.isConnectedToNetwork { success in 
    if success { 
    // google is up 
    } else { 
    // google is down. 
    } 
} 
+0

Это FABULOUS. Большое спасибо. – Garageshop

+0

Теперь я не могу понять, как позвонить. Это то, что у меня есть: если Reachability.isConnectedToNetwork() { self.gettingInfo = self.model.getInfo() } еще { // Получаем локальные вопросы от модели qizz self.questions = само .model.getLocalQuestions() } – Garageshop

+0

Метод работает асинхронно. Результат возвращается ** в ** закрытии. Я обновил ответ. – vadian

Смежные вопросы