xcode Swift 2.0 NSURLConnection 发送同步请求

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/32668554/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-09-15 07:52:14  来源:igfitidea点击:

Swift 2.0 NSURLConnection sendSynchronousRequest

xcodensurlconnectionswift2nsurlrequestreachability

提问by Tom Coomer

I am using the code below to check for an internet connection. It was working correctly but after the Swift 2.0 update I now see an error on the line var data = NSURLConnection.sendSynchronousRequest(request, returningResponse: &response, error: nil) as NSData?saying extra argument 'error' in call.

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

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
}

Do you have any ideas what I should change it to? Thanks

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

回答by Aseider

If you look at apples documentation (https://developer.apple.com/library/ios/documentation/Cocoa/Reference/Foundation/Classes/NSURLConnection_Class/#//apple_ref/occ/clm/NSURLConnection/sendSynchronousRequest:returningResponse:error:) you'll see that the definition changed to this:

如果您查看苹果文档(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

They have removed the error parameter and the method throws now an ErrorType, if the request fails. So this should work:

他们已经删除了错误参数ErrorType,如果请求失败,该方法现在会抛出 an 。所以这应该有效:

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

However you shouldn't use this method: It's deprecated in favor of NSURLSessionsince iOS 9 and OS X 10.11.

但是,您不应使用此方法:NSURLSession自 iOS 9 和 OS X 10.11 起,它已被弃用。