【问题标题】:Swift 2.0 NSURLConnection sendSynchronousRequestSwift 2.0 NSURLConnection sendSynchronousRequest
【发布时间】:2015-09-19 13:04:53
【问题描述】:

我正在使用下面的代码来检查互联网连接。它工作正常,但在 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
}

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

【问题讨论】:

    标签: xcode nsurlconnection swift2 nsurlrequest reachability


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 谢谢。对于 iOS 9,我应该使用什么来代替?
    • NSURLSession 现已正式取代。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多