我升级到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)
}
}
Run Code Online (Sandbox Code Playgroud)
该错误指的是以下行:
Alamofire.request(.POST, urlString, parameters: parameters).responseJSON { (_, _, data, _) -> Void in
Run Code Online (Sandbox Code Playgroud)
我是swift闭包的新手,不知道是否必须嵌套值以使其有效.
非常感谢帮助.
Chr*_*ley 10
闭包采用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)
}
Run Code Online (Sandbox Code Playgroud)
感谢您的帮助,这是我第一次在这里提问,这很有帮助且令人鼓舞。最终代码如下所示:
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)
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
15144 次 |
| 最近记录: |