Swift 2.0 NSURLConnection sendSynchronousRequest

xcode nsurlconnection swift2 nsurlrequest reachability

10256 просмотра

1 ответ

Я использую код ниже, чтобы проверить подключение к интернету. Он работал правильно, но после обновления 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
}

Есть ли у вас какие-либо идеи, на что я должен изменить это? Спасибо

Автор: Tom Coomer Источник Размещён: 12.11.2019 09:27

Ответы (1)


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

Они удалили параметр ошибки, и метод теперь выдает an ErrorType, если запрос не выполнен. Так что это должно работать:

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

Однако вы не должны использовать этот метод: он устарел в пользу NSURLSessioniOS 9 и OS X 10.11.

Автор: Aseider Размещён: 19.09.2015 01:23
Вопросы из категории :
32x32