在Swift中的sendSynchronousRequest方法中传递SubClass变量

时间:2014-06-20 05:09:09

标签: ios objective-c cocoa swift

我有以下代码:

var error : NSError?
var response : NSHTTPURLResponse?


var urlData : NSData = NSURLConnection.sendSynchronousRequest
    (
    request,
    returningResponse: &response,
    error: &error
    ) as NSData

returningResponse会引用参考文档中提到的NSURLResponse实例。

我正在使用NSHTTPURLResponse,它是NSURLResponse的子类。这在Objective-C中运行良好但我不知道如何在Swift中编写它,因为编译器在该行上抛出错误。

错误是: Cannot convert the expression's type 'NSData' to type 'inout NSHTTPURLResponse'

这是什么意思?以及如何做到正确?

1 个答案:

答案 0 :(得分:2)

问题是您传递的方法与方法所期望的类型不同。您仍然应该传递NSURLResponse。您可以在之后投射该类型:

var urlData = NSURLConnection.sendSynchronousRequest
    (
    request,
    returningResponse: &response,
    error: &error
    )
if let httpResponse = response as? NSHTTPURLResponse {
    // Work with HTTP response
}

另请注意,urlData的类型可以从方法的返回类型推断出来。不需要指定类型也不需要将结果转换为NSData,所以我删除了这两个。