【问题标题】:Swift NSURLConnection sendSynchronousRequestSwift NSURLConnection sendSynchronousRequest
【发布时间】:2015-01-05 18:00:26
【问题描述】:

在 Objective 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)

这可行,但我无法再访问 statusCode,因为如果我使用 NSHTTPURLResponse 它会返回需要 NSURLResponse 的错误!

你知道解决这个问题的方法吗?

【问题讨论】:

  • 显然,我希望你永远不要在主线程中使用sendSynchronousRequest。人们总是更喜欢异步请求(尤其是可取消的请求)。

标签: swift


【解决方案1】:

您可以简单地使用&amp; 包装您想要发送指针的值,而不是手动创建AutoreleasingUnsafeMutablePointer - 您的代码变得更加简单:

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)
}

【讨论】:

  • 完美运行。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多