Контекстный тип для списка аргументов закрытия ожидает 1 аргумент, но 4 указаны

Я обновился до 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

Я новичок в быстрых закрытиях и не знаю, нужно ли мне вставлять значения, чтобы они были действительными.

Помощь очень ценится.

Ответ 1

Закрытие принимает единственный параметр типа Response < AnyObject, NSError > , поэтому ваш код должен выглядеть более как это.

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

Ответ 2

Спасибо за помощь, это был мой первый запрос здесь, и это было полезно и обнадеживающе. Окончательный код выглядит следующим образом:

    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)
        }
    }