如何使用 Swift 使用 API 响应

Posted

技术标签:

【中文标题】如何使用 Swift 使用 API 响应【英文标题】:How to consume an API response with Swift 【发布时间】:2019-03-07 07:42:05 【问题描述】:

我正在尝试发出 API 请求以获取 API 响应我正在获取所有元素但我面临大括号问题我想要一个完整的响应和“order_devices”键,在 大括号中,但我在 [ ] 大括号。

the array in which i am passing value,

var popUpArray :[[String:AnyObject]] = []

然后在 btn 点击我将值保存在字典中

@IBAction func btnSave(_ sender: Any)

    let popupDict = (["quantity": Int(txtEnterQuantity.text!), "name": lblDeviceName.text,"id": deviceDict["id"], "region":1, "system_integrated":1 ])as! [String:AnyObject]

然后传递与参数相同的字典值

    let passDict = [
            "dealer_id":dropDownId!,
            "client_id":dropDownId!,
            "distributor_id":searchBarId!,
            "emp_id":UserId,
            "comments":CommentKey!,
            "accepted_by":0,
            "valid_from":strDate!,
            "valid_upto": 0,
            "order_devices":popupDict
            ] as [String : Any]

            if Reachability.isConnectedToNetwork() 
            showActivityIndicator()
            Alamofire.request("http://13.232.230.41/IAC_CRM/public/api/createOrder", method: .post, parameters: passDict, encoding: JSONEncoding.default, headers: [:])
                .responseJSON  (response) in

我收到了这个回复,

[ “cmets”:“演示”, “dealer_id”:3, “valid_from”:“2019 年 6 月 3 日”, “distributor_id”:72, “client_id”:3, “接受者”:0, “emp_id”:33, “有效的_upto”:0 “订单设备”: [ [ “身份证”:1, “数量”:10, “地区”:1, “系统集成”:1 ] , [ “身份证”:2, “数量”:12, “地区”:1, “系统集成”:1 ] ] ]

我想要这个回复,

"dealer_id":"1", "client_id":"2", "distributor_id":"2", "emp_id":"1", "cmets":"IAC 测试设备 cmets", "accepted_by":0, “valid_from”:“2019-01-24”,“valid_upto”:“1”,“order_devices”:[ "device_id":"1", “数量”:“1”,“区域”:1,“system_integrated”:1 , "device_id":"2", “数量”:“1” “地区”:1, “系统集成”:1 ]

意味着我想要整个响应和“大括号”中的“order_devices”键。

【问题讨论】:

【参考方案1】:

请求或响应没有任何问题,您正在得到响应您的 API 返回的内容,您应该要求后端开发人员或 Api 提供者以您的要求的形式给您响应,我的意思是格式正确,现在它的形式是大批。

【讨论】:

是的,先生,我得到了正确的响应,但格式不正确,这就是问题 现在服务器正在以数组对象的形式而不是字典的形式向您发送响应 如何将相同的数据转换成数组形式? 让数据=响应为? [[string:Any]] 让 dictData = data[0] as? [String:Any] 等等...

以上是关于如何使用 Swift 使用 API 响应的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Swift 泛型处理成功和错误 API 响应?

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

如何使用序列化为数据的响应数据处理程序(通过 AlamoFire 的 Swift 3)

如何在 Swift 中使用 .net(C# 创建的 API)?我可以用吗。?

iOS:如何从 REST SwiftUi 访问和使用 API 响应数据

Swift:如何对服务进行 API 调用但不等待响应