Swift NSURLConnection sendSynchronousRequest

Swift NSURLConnection sendSynchronousRequest,swift,Swift,在目标C中,可以使用以下语法: NSHTTPURLResponse *response = nil; NSData *returnData = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:nil]; if ([response statusCode] == 404) { } 现在在Swift中,我使用了: var response : AutoreleasingUns

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

NSHTTPURLResponse *response = nil;
NSData *returnData = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:nil];
if ([response statusCode] == 404)
{
}
现在在Swift中,我使用了:

var response : AutoreleasingUnsafeMutablePointer<NSURLResponse?> = nil
let urlData = NSURLConnection.sendSynchronousRequest(request, returningResponse: &response, error: err)
var响应:autoreleasingusafemutablepointer=nil
让urlData=NSURLConnection.sendSynchronousRequest(请求、返回响应:&response,错误:err)
这是可行的,但我不能再访问状态码了,因为如果我使用NSHTTPURLResponse,它会返回一个错误,需要NSURLResponse


您知道解决此问题的方法吗?

您可以简单地使用
&
包装您要发送指针的值,而不是手动创建
自动删除非可更改指针
,您的代码变得简单得多:

var response: NSURLResponse?
var error: NSError?
let urlData = NSURLConnection.sendSynchronousRequest(request, returningResponse: &response, error: &error)
呼叫后,您需要将响应转换为
NSHTTPURLResponse
,以访问这些属性:

if let httpResponse = response as? NSHTTPURLResponse {
    println(httpResponse.statusCode)
}

工作完美。非常感谢。显然,我希望您永远不要从主线程使用
sendSynchronousRequest
。人们总是喜欢异步请求(尤指可取消的请求)。