如何在 swift5 和 Alamofire 5 beta 版本中获取和保存响应?

Posted

技术标签:

【中文标题】如何在 swift5 和 Alamofire 5 beta 版本中获取和保存响应?【英文标题】:How to get and save the response in swift5 and Alamofire 5 beta version? 【发布时间】:2019-07-18 06:21:38 【问题描述】:

我尝试了一些代码,但仍然没有解决我的问题。请帮助我,我是 swift 代码的新手。

let parameters: Parameters = ["skey": "XXXXXX","country_code":"91","mobile":"XXX004","user_role":"4"]


 AF.request("http://XXXXX/dev/clinic/api/v1/login_otp?", method: .get, parameters: parameters)
    .responseJSON  (response) in
        switch response.result 
        case .success:
            if let JSON = response.result.value as? [String: Any] 
                let status = JSON["status"] as! String
                print(status)
            
        case .failure(let error): break
            // error handling
        

下面是服务器响应

 success(
      message = "Otp sent successfully on +9170XXXX1004";
      status = 1;
)

【问题讨论】:

你有什么问题..请解释一下 Xcode : Alamofire get String response的可能重复 你遇到了什么问题。 我无法打印状态。 如果让 JSON = response.result.value 为? [String: Any] 在这里我收到错误“'Result' 类型的值没有成员 'value'” 【参考方案1】:

对于 Alamo 5,您必须使用:

response.value

【讨论】:

这是修复;在 AlamoFire 5 中从 response.result.value 更改为 this 谢谢...多年来我一直在寻找解决方案。这非常简单快捷!【参考方案2】:

请尝试以下代码:

         switch response.result 
                case .success(let value):
                    if let JSON = value as? [String: Any] 
                        let status = JSON["status"] as! String
                        print(status)
                    
                case .failure(let error): break
                    // error handling
                

【讨论】:

@SivaSankar 对不起,再次检查代码,我已修复 =) let JSON = value as? [String: Any]【参考方案3】:

'Result' 类型的错误 Value has no member 'value' 是由于 Alamofire 版本 5,在 4.8.2 版本中结果类型为

如果您通过 pod 安装了 Alamofire,那么您应该获得 4.8.2 版本,您的代码可以正常运行。

Alamofire.request("https://jsonplaceholder.typicode.com/todos/1", method: .get)
        .responseJSON  (response) in

            switch response.result 
            case .success(_):
                if let JSON = response.result.value as? [String: Any] 
                    let status = JSON["completed"] as! Bool
                    print(status)
                



            case .failure(_): break

            
    

在这种情况下 Result 类型不是 Result 并使用 Alamofire 代替 AF

【讨论】:

在我的 Xcode pod 安装中有一些问题。如果你有任何版本的 alamofire 可以分享给我。 @SivaSankar 你不需要在我的 Podfile 中提及 Podfile 中 Alamofire 的版本,我只是提到 pod 'Alamofire',默认情况下,它将安装最新的稳定版本 4.8.2。将我的答案标记为有效,如果有效,请告诉我。

以上是关于如何在 swift5 和 Alamofire 5 beta 版本中获取和保存响应?的主要内容,如果未能解决你的问题,请参考以下文章

如何上传文件多部分alamofire swift5?

Swift 5.1 和 Alamofire 5.1:GET 方法错误

使用 PHP 在 Swift 5 中使用 Alamofire 接收图像上传

如何使用 Swift 5 在 Xcode 10.2.1 中添加 alamofire

如何在 Swift 5 中使用 Alamofire 解析 json

Swift 5 + Alamofire 5.*:解码顶部具有相同根对象的数据