自定义Alamofire响应函数中的编译器错误

时间:2015-06-01 23:16:19

标签: ios swift alamofire

我尝试使用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函数可以解决问题。

1 个答案:

答案 0 :(得分:0)

事实证明,您需要为带有泛型返回类型的闭包中的变量提供显式类型。所以我需要(object, error) in而不是(object: SpecificType?, error)