我正在尝试构建一个应用程序,在其中我将使用 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/