2016-10-21 2 views
-1

Je suis nouveau à ce sujet et ne semble pas comprendre comment utiliser NSURLSession dataTaskWithResult:completion handler en remplaçant NSURLConnection.sendSynchronusRequest(request as URLRequest, returning: &response dans le code suivant. Ce dernier a été déprécié.Accessibilité dans 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 
    } 
} 

Répondre

2

solution simple avec un gestionnaire d'achèvement

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() 
} 

Et pour appeler

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

C'est FABULEUX. Merci beaucoup. – Garageshop

+0

Maintenant, je n'arrive pas à comprendre comment faire l'appel. Voilà ce que j'ai: si Reachability.isConnectedToNetwork() { self.gettingInfo = self.model.getInfo() } else {// Obtenez des questions locales du modèle qizz self.questions = auto .model.getLocalQuestions() } – Garageshop

+0

La méthode fonctionne de manière asynchrone. Le résultat est retourné ** dans ** la fermeture. J'ai mis à jour la réponse. – vadian