Контекстный тип для списка аргументов закрытия ожидает 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)
}
}