无法使用类型为 (('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)
请务必导入Alamofire
、AlamofireObjectMapper
和ObjectMapper
。
【讨论】:
我实现了你的代码的第二行......仍然是同样的错误......我是否还需要设置 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”的主要内容,如果未能解决你的问题,请参考以下文章
无法使用类型为“(UInt32)”的参数列表调用类型“CGBitmapInfo”的初始化程序