如何暂停应用程序直到使用 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 数据时更新它。
我正在尝试构建一个应用程序,我将在其中使用 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 数据时更新它。