如何等到Alamofire网络完成?

时间:2015-08-24 04:35:09

标签: swift networking alamofire

我想等到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)
        }
    }
}

1 个答案:

答案 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()
}