【问题标题】:Swift - downcast NSURLResponse to NSHTTPURLResponse in order to get response codeSwift - 将 NSURLResponse 向下转换为 NSHTTPURLResponse 以获得响应代码
【发布时间】:2023-03-27 15:10:02
【问题描述】:

我正在使用 NSURLRequest 在 SWIFT 中构建休息查询

var request : NSURLRequest = NSURLRequest(URL: url)

var connection : NSURLConnection = NSURLConnection(request: request, delegate: self, startImmediately: false)!
connection.start()

我的问题是如何从返回的响应中获取响应代码:

    func connection(didReceiveResponse: NSURLConnection!, didReceiveResponse response: NSURLResponse!) {
//...
}

根据 Apple 的说法:NSHTTPURLResponseNSURLResponse 的子类,它有一个状态码,但我不确定如何向下转换我的响应对象,以便我可以看到响应码。

这似乎没有削减它:

println((NSHTTPURLResponse)response.statusCode)

谢谢

【问题讨论】:

  • 我认为这是一个downcast,而不是upcast

标签: ios swift


【解决方案1】:

使用可选类型转换 (as?) 和可选绑定 (if let):

func connection(didReceiveResponse: NSURLConnection!, didReceiveResponse response: NSURLResponse!) {
    if let httpResponse = response as? NSHTTPURLResponse {
        println(httpResponse.statusCode)
    } else {
        assertionFailure("unexpected response")
    }
}

或单线

let statusCode = (response as? NSHTTPURLResponse)?.statusCode ?? -1

如果响应不是 HTTP 响应,则状态代码将设置为 -1 (对于 HTTP 请求不应该发生这种情况)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-09-21
    • 2020-05-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-15
    • 1970-01-01
    相关资源
    最近更新 更多