Swift NSURLConnection sendSynchronousRequest

use*_*256 12 swift

在Objective C中,可以使用以下语法:

NSHTTPURLResponse *response = nil;
NSData *returnData = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:nil];
if ([response statusCode] == 404)
{
}
Run Code Online (Sandbox Code Playgroud)

现在在Swift我使用过:

var response : AutoreleasingUnsafeMutablePointer<NSURLResponse?> = nil
let urlData = NSURLConnection.sendSynchronousRequest(request, returningResponse: &response, error: err)
Run Code Online (Sandbox Code Playgroud)

哪个有效,但我不能再访问statusCode,因为如果我使用NSHTTPURLResponse它会返回一个需要NSURLResponse的错误!

你知道怎么解决这个问题吗?

Nat*_*ook 26

AutoreleasingUnsafeMutablePointer您可以简单地使用&包装要发送指针的值来代替手动创建- 您的代码变得更加简单:

var response: NSURLResponse?
var error: NSError?
let urlData = NSURLConnection.sendSynchronousRequest(request, returningResponse: &response, error: &error)
Run Code Online (Sandbox Code Playgroud)

通话结束后,您需要转换您的响应NSHTTPURLResponse以访问这些属性:

if let httpResponse = response as? NSHTTPURLResponse {
    println(httpResponse.statusCode)
}
Run Code Online (Sandbox Code Playgroud)