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

Posted

技术标签:

【中文标题】如何暂停应用程序直到使用 Alamofire 下载 json 数据?【英文标题】:How to pause the application till the json data is downloaded using Alamofire? 【发布时间】:2017-01-23 06:15:39 【问题描述】:

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

我有一个函数,它从 JSON 中获取响应,然后返回一个需要在我的 textField 中显示的值。我怎样才能延迟文本字段功能,直到我从响应中得到我的值。

我可以在下载数据时显示进度条或活动监视器,以确保用户不会认为应用程序什么都不做吗?(在调用 api 并执行函数期间)

【问题讨论】:

在更新文本字段之前使用进度条 您可以隐藏文本字段并在可用时显示它。 看看github.com/jdg/MBProgressHUD 非常感谢,我已经使用了 progree HUD,它可以按要求工作。感谢您的意见。 【参考方案1】:

您有多种选择:

a. 使用 cmets 中建议的活动指标来回答您的问题。

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 调用返回数据时更新它。

【讨论】:

有人可以编辑这个答案并正确格式化代码吗?我已经尝试了很多,但无法让它看起来不错。提前致谢。 非常感谢。

以上是关于如何暂停应用程序直到使用 Alamofire 下载 json 数据?的主要内容,如果未能解决你的问题,请参考以下文章

swift3 用Alamofire下载视频断点续传

Alamofire:取消(暂停)文件上传

如何暂停整个程序的执行,直到在 JAVA 中按下按钮?

Alamofire:如何按顺序下载文件

如何暂停powershell脚本,直到调试器附加

C# - 如何暂停应用程序直到计时器完成?