如何暂停应用程序直到使用 Alamofire 下载 json 数据?

How to pause the application till the json data is downloaded using Alamofire?

我正在尝试构建一个应用程序,我将在其中使用 Alamofire 向某个第 3 方发出请求 API。我的文本字段之一需要显示我从响应中获得的值。

我有一个函数,它接受来自 JSON 的响应,然后 returns 一个需要在我的文本字段中显示的值。我怎样才能延迟文本字段功能,直到我从响应中获得我的价值。

我可以在下载数据时显示进度条或 activity 监视器,只是为了确保用户不会认为该应用程序无所事事吗?(在 api 下载期间调用并正在执行函数)

您有多种选择:

a. 按照问题评论中的建议使用 activity 指标。

b. 为您的调用使用完成处理程序

func getTextFieldData(url: String, completion: @escaping (String) -> Void) {
        Alamofire.request(.POST, "http://someurl.com/gettextFieldData",
                          parameters: ["queryValue": userName],
                          encoding:.JSON).responseJSON { request, response, result in

                switch (result) {
                case .Success(let JSON):
                    let fieldValue = String(data: JSON.dataUsingEncoding(NSUTF8StringEncoding)!,
                                            encoding: NSUTF8StringEncoding)!
                    completion(fieldValue)
                case .Failure(let data, _):
                    if let errorData = data,
                         fieldValue = String(data: errorData,
                                             encoding: NSUTF8StringEncoding) {
                        completion(fieldValue)
                    }
                }
        }
 }

您可以更新完成处理程序中的值

c. 在显示视图之前获取文本字段值。

d. 使用默认值并在您 API 调用 returns 数据时更新它。