无法解析响应 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的主要内容,如果未能解决你的问题,请参考以下文章

Json 解析 Swift 3 Alamofire

如何在 Swift 中解析来自 Alamofire API 的 JSON 响应?

无法使用闭包使用 alamofire 解析 json

Alamofire 4 请求返回 NSArray,无法弄清楚如何在 Swift 3 中使用 SwiftyJSON 进行解析

无法从 Alamofire 的 Swift 3 中的 Web 服务的 PATCH API 调用中获得响应

响应和响应序列化程序 Swift 3.0 的 Alamofire 3->4 问题