2015-09-19 1 views
1

J'utilise le code ci-dessous pour vérifier une connexion Internet. Cela fonctionnait correctement, mais après la mise à jour de Swift 2.0, je vois maintenant une erreur sur la ligne var data = NSURLConnection.sendSynchronousRequest(request, returningResponse: &response, error: nil) as NSData? indiquant un argument supplémentaire 'erreur' dans l'appel.Swift 2.0 NSURLConnection sendSynchronousRequest

class func isConnectedToNetwork()->Bool{ 

    var Status:Bool = false 
    let url = NSURL(string: "http://google.com/") 
    let request = NSMutableURLRequest(URL: url!) 
    request.HTTPMethod = "HEAD" 
    request.cachePolicy = NSURLRequestCachePolicy.ReloadIgnoringLocalAndRemoteCacheData 
    request.timeoutInterval = 10.0 

    var response: NSURLResponse? 

    var data = NSURLConnection.sendSynchronousRequest(request, returningResponse: &response, error: nil) as NSData? 

    if let httpResponse = response as? NSHTTPURLResponse { 
     if httpResponse.statusCode == 200 { 
      Status = true 
     } 
    } 

    return Status 
} 

Avez-vous des idées sur ce que je devrais changer? Merci

Répondre

6

Si vous regardez la documentation des pommes (https://developer.apple.com/library/ios/documentation/Cocoa/Reference/Foundation/Classes/NSURLConnection_Class/#//apple_ref/occ/clm/NSURLConnection/sendSynchronousRequest:returningResponse:error :) vous verrez que la définition a changé à ceci:

class func sendSynchronousRequest(_ request: NSURLRequest, 
      returningResponse response: AutoreleasingUnsafeMutablePointer<NSURLResponse?>) throws -> NSData 

Ils ont supprimé le paramètre d'erreur et la méthode lance maintenant une ErrorType, si le demande échoue. Donc, cela devrait fonctionner:

do { 
    let data = try NSURLConnection.sendSynchronousRequest(request, returningResponse: &response) 
} catch (let e) { 
    print(e) 
} 

Cependant, vous ne devriez pas utiliser cette méthode: Il est dépréciée en faveur de NSURLSession depuis iOS 9 et OS X 10.11.

+0

Merci. Que devrais-je utiliser à la place pour iOS 9? –

+0

NSURLSession l'a remplacé officiellement maintenant. – macshome