我想等到Alamofire的网络工作结束。
但是,使用现在的代码,它不会等待网络的完成,然后通过login()函数移动到下一页。
你能告诉我如何等到Alamofire的netwokirng完成了吗?
@IBAction func signInWithTwitter(sender: UIButton) {
Twitter.sharedInstance().logInWithCompletion { (session: TWTRSession!, error: NSError!) -> Void in
if session != nil {
let parameters = [
"tw_id":session.userID,
"tw_name" :session.userName,
"tw_token":session.authToken
]
Alamofire.request(.POST, self.uri.usersApi + "/tw_login", parameters: parameters, encoding: .JSON)
.responseJSON { (request, response, data, error) in
var jsonObj = JSON(data!)
var uid = jsonObj["user_id"].int
self.defaults.setObject(uid, forKey: "uid")
}
self.login()
} else {
println(error.localizedDescription)
}
}
}
答案 0 :(得分:3)
尝试将登录方法放在Alamofire
块
Alamofire.request(.POST, self.uri.usersApi + "/tw_login", parameters: parameters, encoding: .JSON)
.responseJSON { (request, response, data, error) in
var jsonObj = JSON(data!)
var uid = jsonObj["user_id"].int
self.defaults.setObject(uid, forKey: "uid")
self.login()
}