Swift 闭包参数列表的上下文类型需要1个参数,但指定了4个

Swift 闭包参数列表的上下文类型需要1个参数,但指定了4个,swift,swift2,Swift,Swift2,我升级到Xcode 7,并使用Alamofire管理API调用,我收到以下错误: '闭包参数列表的上下文类型需要1个参数,但指定了4个' 对于以下代码: static func loginWithEmail(email: String, password: String, response: (token: String?) -> ()) { let urlString = baseURL + ResourcePath.login.description let para

我升级到Xcode 7,并使用Alamofire管理API调用,我收到以下错误:

'闭包参数列表的上下文类型需要1个参数,但指定了4个'

对于以下代码:

 static func loginWithEmail(email: String, password: String, response: (token: String?) -> ()) {
    let urlString = baseURL + ResourcePath.login.description
    let parameters = [
        "email": email,
        "password": password
    ]
    Alamofire.request(.POST, urlString, parameters: parameters).responseJSON { (_, _, data, _) -> Void in
        let json = JSON(data!)
        let token = json["token"].string
        response(token: token)
    }
}
错误是指以下行:

  Alamofire.request(.POST, urlString, parameters: parameters).responseJSON { (_, _, data, _) -> Void in
我是swift闭包的新手,不知道是否必须嵌套这些值才能使其有效


非常感谢您的帮助。

闭包只接受一个Response类型的参数,因此您的代码应该更像这样

Alamofire.request(.POST, urlString, parameters: parameters).responseJSON { response in
    let json = JSON(response.data!)
    let token = json["token"].string
    response(token: token)
}

谢谢你的帮助,这是我第一次在这里问你,这很有帮助,也很令人鼓舞。最终代码如下所示:

    static func loginWithEmail(email: String, password: String, func_response: (token: String?) -> ()) {
    let urlString = baseURL + ResourcePath.login.description
    let parameters = [
        "email": email,
        "password": password
    ]
    Alamofire.request(.POST, urlString, parameters: parameters).responseJSON { response in
        if response.result.isSuccess {
            let json = JSON(response.result.value!)
            let token = json["token"].string
            func_response(token: token)
        }
    }

你有没有看过,特别是“打破API变化”一节?完成处理程序呢?