Swift 2.0 NSURLConnection sendSynchronousRequest

Tom*_*mer 1 xcode nsurlconnection nsurlrequest reachability swift2

我使用下面的代码检查互联网连接.它工作正常,但在Swift 2.0更新后,我现在看到一行var data = NSURLConnection.sendSynchronousRequest(request, returningResponse: &response, error: nil) as NSData?错误,在调用中说出额外的参数'error'.

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
}
Run Code Online (Sandbox Code Playgroud)

你有什么想法我应该改变它吗?谢谢

Ase*_*der 6

如果你看一下苹果文档(https://developer.apple.com/library/ios/documentation/Cocoa/Reference/Foundation/Classes/NSURLConnection_Class/#//apple_ref/occ/clm/NSURLConnection/sendSynchronousRequest:returningResponse:error : )你会看到定义改为:

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

ErrorType如果请求失败,他们已经删除了错误参数,并且该方法现在抛出了.所以这应该工作:

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

但是你不应该使用这种方法:NSURLSession从iOS 9和OS X 10.11开始,它不赞成使用.