无法使用类型为 (('WeatherResponse?, NSError?) -> Void 的参数列表调用“responseObject”

Posted

技术标签:

【中文标题】无法使用类型为 ((\'WeatherResponse?, NSError?) -> Void 的参数列表调用“responseObject”【英文标题】:Cannot Invoke 'responseObject' with an argument list of type (('WeatherResponse?, NSError?) -> Void无法使用类型为 (('WeatherResponse?, NSError?) -> Void 的参数列表调用“responseObject” 【发布时间】:2015-09-12 11:28:33 【问题描述】:

使用 Xcode 7.1 使用来自Github 的 AlamofireObjectMapper 框架。我无法使用 responseObject 处理程序。

下面是代码:

let url = "https://raw.githubusercontent.com/tristanhimmelman/AlamofireObjectMapper/f583be1121dbc5e9b0381b3017718a70c31054f7/sample_json"
    Alamofire.request(.GET, url).responseObject(response :WeatherResponse?, error: NSError?) -> Void in
       print(response?.location)
        

即使我从代码中删除 '-> Void' 也没有区别。 WeatherResponse 是一个自定义类,代码如下:

class WeatherResponse: Mappable 
var location: String?
var threeDayForecast: [Forecast]?

required init?(_ map: Map)



func mapping(map: Map) 
    location <- map["location"]
    threeDayForecast <- map["three_day_forecast"]


错误:

【问题讨论】:

同样的问题?你找到解决办法了吗? 【参考方案1】:

responseObject 的方法签名是

public func responseObject<T: Mappable>(completionHandler: (T?, ErrorType?) -> Void) -> Self

请注意,错误参数是ErrorType?,而不是NSError?。调用闭包的正确方法是:

Alamofire.request(.GET, url).responseObject(response: WeatherResponse?, error: ErrorType?) -> Void in
   print(response?.location)

请务必导入AlamofireAlamofireObjectMapperObjectMapper

【讨论】:

我实现了你的代码的第二行......仍然是同样的错误......我是否还需要设置 responseObject 函数...... 你导入Alamofire、AlamofireObjectMapper和ObjectMapper了吗? 我已经在 GitHub 上添加了我的示例项目。你能看看并帮助我吗? github.com/sahil25/AlamofireObjectMapper-Example 无论出于何种原因,您都在WeatherResponse.swift (?) 中重新定义了Mappable 协议。删除该协议重新定义并应用我的答案中的建议解决了编译问题。【参考方案2】:

在模型中导入 AlamofireObjectMapper 和 ObjectMapper 解决了我的问题

【讨论】:

【参考方案3】:

目前您可以使用 2.1 版:

Alamofire.request(.GET, URL, parameters: nil)
    .responseObject( (response: Response< WeatherResponse, NSError>) -> Void in
        if response.result.isSuccess 
            print(response.result.value)
        
    )

祝你好运!

【讨论】:

以上是关于无法使用类型为 (('WeatherResponse?, NSError?) -> Void 的参数列表调用“responseObject”的主要内容,如果未能解决你的问题,请参考以下文章

无法使用类型为“”的参数列表调用类型“”的初始化程序

无法使用类型为 '(Codable.Type?

Constraint 无法解析为类型

无法使用类型为“(UInt32)”的参数列表调用类型“CGBitmapInfo”的初始化程序

无法使用“Any?”类型的索引为“[AnyHashable:Any]”类型的值下标

无法使用“Int”类型的索引为“[String : String]”类型的值下标