Alamofire 请求响应?
Posted
技术标签:
【中文标题】Alamofire 请求响应?【英文标题】:Alamofire request response? 【发布时间】:2017-04-12 12:02:14 【问题描述】:我正在使用这个 Alamofire 请求并返回一个 json
let todoEndpoint: String = "https://api.abc.com/api/v3/products?pid=uid8225&format=json&&offset=0&limit=10"
Alamofire.request(todoEndpoint)
.responseJSON response in
guard let json = response.result.value as? [String: Any] else
print("didn't get todo object as JSON from API")
print("Error: \(response.result.error)")
return
print(json)
现在我有循环,我想使用这个 json 值,但我得到了:
错误:使用未解析的标识符 json?
do
for (index,subJson):(String, JSON) in json
print("Index :\(index) Title: \(subJson)" )
catch
print("there was an error")
如前所述:
https://github.com/Alamofire/Alamofire#response-string-handler " 请求的结果仅在响应闭包的范围内可用。任何取决于从服务器接收到的响应或数据的执行都必须在响应闭包内完成。"
如何在响应闭包范围之外使用这个 json 值?
你能推荐一下吗
是否有任何我需要编写的完成处理程序以及如何完成?
谢谢
【问题讨论】:
Parsing JSON using the new Swift 3 and Alamofire的可能重复 GS,您是否尝试搜索解决方案,因为这个问题已经被问到超过 30 多个线程:google.se/… 你do
块应该在警卫之后运行,即guard let else ... HERE
。目前,您在 json
不存在的范围内进行操作
嗨亲爱的,感谢您的回复,如果我在范围内使用,那么请建议我在解析所有 json 值后是否可以在其他地方使用这些值,例如
我有 items.append(name:name1) 并且这些值需要在不同的类中使用,例如 cell.titleLabel1.text = item.name1 ,因为我在循环中尝试过,但我没有能够获取值
【参考方案1】:
最好使用 SwiftyJson 来使用 Almofire 轻松解析 json,如下所示:
import Alamofire
import SwiftyJSON
static func getRequest(urlString: URL?, Parameter:NSDictionary?, completion: @escaping (_ serverResponse: AnyObject?,_ error:NSError?)->())
Alamofire.request(urlString!, parameters:nil, headers: nil).responseJSON response in
if(response.result.value != nil)
let serverResponse = JSON(response.result.value!)
print("Array value is \(serverResponse.arrayValue)")
completion(serverResponse as AnyObject?, nil)
else
completion(nil, response.result.error as NSError?)
您可以在单独的类(如 NetworkLayer)中编写此函数,然后从任何类中调用它以进行 WebService 调用,如下所示:
let url = NSURL(string: yourWebServiceUrlString)
NetworkLayer.getRequest(urlString: url as URL?, Parameter: nil) (serverResponse, error) in
if (error == nil)
print("Server response: \(serverResponse)")
注意:你也可以在里面传参数字典。
【讨论】:
避免回答之前多次询问的重复问题。 好的,我会处理的。 嗨 Sneak,这个问题与你提到的线程中的问题有些不同,因为我搜索了链接但无法得到答案 @GS 你有没有尝试提供的代码。如果您需要任何帮助,请告诉我。 谢谢 Aashish,你能建议我如何调用这个函数吗?以上是关于Alamofire 请求响应?的主要内容,如果未能解决你的问题,请参考以下文章