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

标签 ios json swift progress-bar alamofire

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

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

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

最佳答案

您有多种选择:

a.按照问题评论中的建议使用事件指示器。

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. 在呈现 View 之前获取文本字段值。

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

关于ios - 如何暂停应用程序直到使用 Alamofire 下载 json 数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41800260/

相关文章:

ios - 如何将 RFC3339-String 转换为 NSDate

ios - 无法为 UIBarButtonItem 设置图像

javascript - 从 Canvas 中排除元素以保存到 json (fabric.js)

php - 在 PHP 中检测 json_decode() 失败

ios - 按频率列出数组中的对象,最常出现在最前面

ios - 使用 skphysicsBody 和半径的圆圈将球困在圆圈中

ios - 省略内存管理属性

iOS 关于retainCount

iphone - iOS 简单的方法来转换和存储大表

ios - 字符串转换与字符串展开