无法解析响应 alamofire swift 3
Posted
技术标签:
【中文标题】无法解析响应 alamofire swift 3【英文标题】:cannot parse response alamofire swift 3 【发布时间】:2017-02-01 21:34:29 【问题描述】:我正在尝试使用 Alamofire 快速发出 Get 请求。当我在模拟器或装有 ios 10 的设备中运行时,它运行良好。当我在装有 iOS 9.x 或更早版本的设备上运行我的应用程序时,我收到“无法解析响应”。 JSON 响应是正确的。我检查了邮递员。
这是我的代码:
lass func getStores(latitude:Float, longitude: Float, completion : @escaping (Array<Store>?, NSError?) -> ())
let latString: String = "\(latitude)"
let lonString: String = "\(longitude)"
var listStores: Array<Store> = []
let urlFull : String = ConstantHelper.kUrlStore
Alamofire.request(urlFull, method: .get, parameters: ["latitude":latString, "longitude": lonString], encoding: JSONEncoding(options: []), headers: [:]).validate()
.responseJSON response in
switch response.result
case .success:
if let repoJSON = response.result.value
print(repoJSON)
let jsonArray = repoJSON as! NSArray
for item in jsonArray
guard let store = Store(json: item as! JSON) else
print("Issue deserializing model")
return
listStores.append(store)
completion(listStores, nil)
break
case .failure(let error):
completion(nil, error as NSError?)
break
【问题讨论】:
根据我的经验,您可能在 Postman 中看到 JSON 正确,但 JSONSerialization 会说它已损坏。请改为显示您的 JSON 响应。如果可能的话,也许是链接。 【参考方案1】:我使用以下代码解决了我的问题,但请求中没有 JSON 编码:
Alamofire.request(urlFull, method: .get, parameters: ["latitude":latString, "longitude": lonString]).validate()
我不知道为什么在 Swift 2.x 和带有编码的 iOS 10 的 Swift 3.0 中有效,而在 ios 9 中无效......但上面的代码在所有情况下都有效。而且它真的不需要结束这个请求
【讨论】:
以上是关于无法解析响应 alamofire swift 3的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Swift 中解析来自 Alamofire API 的 JSON 响应?
Alamofire 4 请求返回 NSArray,无法弄清楚如何在 Swift 3 中使用 SwiftyJSON 进行解析