【问题标题】:How to wait until networking by Alamofire has finished?如何等到 Alamofire 联网完成?
【发布时间】:2015-11-17 09:59:03
【问题描述】:

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

【问题讨论】:

  • 不要等到请求完成,而是将依赖于请求的任何内容放入 response 闭包中并让它异步运行,如下面的 iAshish 所示。

标签: swift networking alamofire


【解决方案1】:

尝试将登录方法放在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()
}

【讨论】:

    猜你喜欢
    • 2023-03-22
    • 2011-01-29
    • 1970-01-01
    • 2022-01-21
    • 2019-05-11
    • 2016-06-17
    • 2012-05-18
    • 2013-01-28
    • 1970-01-01
    相关资源
    最近更新 更多