【问题标题】:Passing SubClass Variable in sendSynchronousRequest Method in Swift在 Swift 的 sendSynchronousRequest 方法中传递子类变量
【发布时间】:2014-06-20 05:09:08
【问题描述】:

我有以下代码:

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'

这是什么意思?以及如何正确处理?

【问题讨论】:

    标签: ios objective-c cocoa swift


    【解决方案1】:

    问题是您传递的类型与方法预期的不同。你仍然应该通过NSURLResponse。您可以在之后转换类型:

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

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

    【讨论】:

    • 谢谢伙计。为我节省了很多时间
    猜你喜欢
    • 2014-05-11
    • 2016-01-01
    • 2012-11-11
    • 1970-01-01
    • 2018-11-17
    • 1970-01-01
    • 2013-10-30
    • 1970-01-01
    • 2021-04-12
    相关资源
    最近更新 更多