Swift - 向下转换NSURLResponse到NSHTTPURLResponse以获取响应代码

Jee*_*eef 10 ios swift

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

var request : NSURLRequest = NSURLRequest(URL: url)

var connection : NSURLConnection = NSURLConnection(request: request, delegate: self, startImmediately: false)!
connection.start()
Run Code Online (Sandbox Code Playgroud)

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

    func connection(didReceiveResponse: NSURLConnection!, didReceiveResponse response: NSURLResponse!) {
//...
}
Run Code Online (Sandbox Code Playgroud)

根据Apple: NSHTTPURLResponse它是一个NSURLResponse具有状态代码的子类,但我不确定如何转发我的响应对象,以便我可以看到响应代码.

这似乎没有削减它:

println((NSHTTPURLResponse)response.statusCode)
Run Code Online (Sandbox Code Playgroud)

谢谢

Mar*_*n R 16

使用as?带有可选绑定(if let)的可选cast ():

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

或作为一个班轮

let statusCode = (response as? NSHTTPURLResponse)?.statusCode ?? -1
Run Code Online (Sandbox Code Playgroud)

-1如果响应不是HTTP响应(对于HTTP请求不应该发生),则将状态代码设置为的位置.