【问题标题】:Alamofire Wait for completionAlamofire 等待完成
【发布时间】:2023-03-22 20:55:02
【问题描述】:

我有一个返回布尔值(默认为 false)并使用 Alamofire 调用返回字符串的 API 的方法。但是,由于 API 请求是异步的,因此该方法总是在异步请求完成之前完成并返回 false。 我怎样才能等到 API 调用“实际上”完成才能返回正确的结果?

我尝试将 return 语句放在 .success 和 .failure 块中,但这会导致错误

func validateCredentials() -> Bool{
    var apiResult = false

Alamofire.request("http://myURL?pUser=\(usernameTextField.text!)&pPwd=\(passwordTextField.text!)&pCheckIt=y")
        .responseString {
            response in
            switch response.result{
            case .success:
                apiResult = true

            case .failure:
                apiResult = false
            }
    }

    ProgressHUD.show("Please wait...")

    return apiResult . <==== Always return false

}

【问题讨论】:

标签: swift4 alamofire


【解决方案1】:

您需要像下面这样放置转义完成块。

func validateCredentials(completion:@escaping(Bool) -> Void) {
        ProgressHUD.show("Please wait...")
        Alamofire.request("http://myURL?pUser=\(usernameTextField.text!)&pPwd=\(passwordTextField.text!)&pCheckIt=y")
            .responseString {
                ProgressHUD.hide()
                response in
                switch response.result{
                case .success:
                    completion(true)
                case .failure:
                    completion(false)
                }
        }

    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-01-17
    • 2022-01-21
    • 2020-10-04
    • 2020-07-04
    • 2011-12-28
    • 2011-09-08
    • 1970-01-01
    • 2011-10-14
    相关资源
    最近更新 更多