Ios 未调用Alamofire完成处理程序
我目前正在尝试调用AlamoFire完成处理程序中的Ios 未调用Alamofire完成处理程序,ios,iphone,swift,alamofire,completionhandler,Ios,Iphone,Swift,Alamofire,Completionhandler,我目前正在尝试调用AlamoFire完成处理程序中的prepareForSegue方法,但没有被调用。这是我的密码: func loginMember (username: String, password: String, completionHandler: (String?, ErrorType?) -> ()) { let headers = [ "Cache-Control": "no-cache", "Content-Type": "application
prepareForSegue
方法,但没有被调用。这是我的密码:
func loginMember (username: String, password: String, completionHandler: (String?, ErrorType?) -> ()) {
let headers = [
"Cache-Control": "no-cache",
"Content-Type": "application/json"
]
let parameters: [String: AnyObject] = [
"grant_type" : "password",
"username" : username,
"password" : password,
]
Alamofire.request(.POST, "\(baseURL)/oauth2/token", parameters: parameters, encoding: .JSON, headers: headers)
.validate()
.responseJSON { response in
switch response.result {
case .Success:
guard let value = response.result.value else {
completionHandler(nil, response.result.error)
return
}
let swiftyJsonVar = JSON(value)
accessToken = swiftyJsonVar["access_token"].stringValue
print("This is the login response:\(swiftyJsonVar)")
case .Failure(let error):
print("Sorry there was an error: \(error)")
return
}
}
}
这是调用时的外观:
loginMember(username, password: password, completionHandler: { error in
dispatch_async(dispatch_get_main_queue()) {
self.performSegueWithIdentifier("loginToHomeSegue", sender: self)
}
}
)
关于为什么没有调用
performsguewithidentifier
有什么想法吗?您只在输入guard语句的情况下调用您的完成处理程序。您需要为获得访问令牌和错误案例的情况添加调用
Alamofire.request(.POST, "\(baseURL)/oauth2/token", parameters: parameters, encoding: .JSON, headers: headers)
.validate()
.responseJSON { response in
switch response.result {
case .Success:
guard let value = response.result.value else {
completionHandler(nil, response.result.error)
return
}
let swiftyJsonVar = JSON(value)
accessToken = swiftyJsonVar["access_token"].stringValue
print("This is the login response:\(swiftyJsonVar)")
// Got the token, call handler
completonHandler(accessToken, nil)
case .Failure(let error):
print("Sorry there was an error: \(error)")
// Got an error, call handler
completionHandler(nil, error)
return
}
}
你只是在警卫声明失败的情况下才调用它我不知道,我怎么能改变它,使它在成功时调用?