自定义 Alamofire 响应函数中的编译器错误
Compiler error in custom Alamofire response function
我正在尝试使用 Argo 为 Alamofire 实现通用 responseObject
函数。不幸的是,我遇到了一个持续的编译器错误:
error: missing argument for parameter #2 in call
APIManager.manager.request(APIRouter.Login(username: usernameTextField.text, password: passwordTextField.text)).responseObject { (object, error) -> Void in
我理解这个错误通常与元组有关,所以我猜我的代码中的某些内容被误解为元组,但我不知道是什么。这是我的 responseObject
函数:
func responseObject<T: Decodable where T == T.DecodedType>(completionHandler: (T?, NSError?) -> Void) -> Self {
return responseJSON(options: .AllowFragments) { (request, response, JSON, error) in
// TODO: Complete error handling.
var responseObject: T?
if let JSON: AnyObject = JSON,
let response: Response = decode(JSON) where response.status == "0" {
responseObject = decode(JSON)
}
completionHandler(responseObject, error)
}
}
我的请求代码和路由器工作正常,是这个 responseObject
函数的添加破坏了东西。
事实证明,您需要为带入具有通用 return 类型的闭包的变量提供显式类型。所以我需要 (object: SpecificType?, error)
.
而不是 (object, error) in
我正在尝试使用 Argo 为 Alamofire 实现通用 responseObject
函数。不幸的是,我遇到了一个持续的编译器错误:
error: missing argument for parameter #2 in call
APIManager.manager.request(APIRouter.Login(username: usernameTextField.text, password: passwordTextField.text)).responseObject { (object, error) -> Void in
我理解这个错误通常与元组有关,所以我猜我的代码中的某些内容被误解为元组,但我不知道是什么。这是我的 responseObject
函数:
func responseObject<T: Decodable where T == T.DecodedType>(completionHandler: (T?, NSError?) -> Void) -> Self {
return responseJSON(options: .AllowFragments) { (request, response, JSON, error) in
// TODO: Complete error handling.
var responseObject: T?
if let JSON: AnyObject = JSON,
let response: Response = decode(JSON) where response.status == "0" {
responseObject = decode(JSON)
}
completionHandler(responseObject, error)
}
}
我的请求代码和路由器工作正常,是这个 responseObject
函数的添加破坏了东西。
事实证明,您需要为带入具有通用 return 类型的闭包的变量提供显式类型。所以我需要 (object: SpecificType?, error)
.
(object, error) in