我有以下代码:
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'
这是什么意思?以及如何做到正确?
答案 0 :(得分:2)
问题是您传递的方法与方法所期望的类型不同。您仍然应该传递NSURLResponse
。您可以在之后投射该类型:
var urlData = NSURLConnection.sendSynchronousRequest
(
request,
returningResponse: &response,
error: &error
)
if let httpResponse = response as? NSHTTPURLResponse {
// Work with HTTP response
}
另请注意,urlData的类型可以从方法的返回类型推断出来。不需要指定类型也不需要将结果转换为NSData,所以我删除了这两个。