ios 是否可以使用Alamofire Swift在API命中时将Array和Dictionary都发送到参数中?

kqhtkvqz  于 5个月前  发布在  iOS
关注(0)|答案(2)|浏览(70)

我有如下的价值观。

let values = ["06786984572365", "06644857247565", "06649998782227"]
let params:[String:Any] = ["delete_wishlist_products":"1"]

字符串
在Alamofire中使用Swift在API命中时,是否有任何可能的方法将字典和数组作为不带头的参数发送。
在这里找到我的示例代码:

func deleteWishlistValue(){
        
        let values = ["12345", "1345", "1234"]
        let params:[String:Any] = ["delete_wishlist_products":"1",
                                   "product_id":values,
                                   "customer_id":"152698"]
        
        Alamofire.request(Services.deleteWishlist,method: .get,parameters: params, headers:nil).responseJSON { (response) in
                            if response.result.error == nil{
                                print(response)
                            }else{
                                print(response.result.error?.localizedDescription ?? "")
                            }
        }
    }

mi7gmzs6

mi7gmzs61#

下面是一个如何使用almofire在API中发送数组数据的示例

func getContest(arrDetails: [String],  completion: @escaping(_ reponse: ContestListResponse?, _ error: ApiError?)-> Void) {
    contestListRequest?.cancel()
    let parameters: Parameters = [
        "limit": "10",
        "details": arrDetails
        ]
let headers: HTTPHeaders = [
        "language": DBManager.getUserData()?.language ?? "eng"
    ]
    contestListRequest = Alamofire.request(AppURL.contestList, method:.post, parameters: parameters, encoding: JSONEncoding.default, headers: headers)
        .responseContestListResponse(completionHandler: { (response) in
            switch response.result {
            case .success(let result):
                print("result---",result)
                if response.response?.statusCode == 200 {
                    completion(result, nil);
                } else {
                    completion(result, ApiError(domain: .api, code: response.response?.statusCode ?? 0, msg: result.message ?? ""))
                }
            case .failure(let error):
                completion(nil, ApiError(domain: .system, code: error._code, msg: error.localizedDescription))
            }
        })
        .responseString { (response) in
            print(response.result.value ?? "NO Response")
    }
}

字符串
自己更改响应类和完成处理程序。
注意encoding: JSONEncoding.default这是你直接发送数组或dict到参数所必需的,要求你的后端开发人员相应地获取属性。

d5vmydt9

d5vmydt92#

是的,你只需要定义一个数组,你几乎就完成了,只需要在你的字典中多一组[]。

let values = [["product_id" : 06786984572365, "option_id" : 1]]
let params: [String: Any] = [
        "delete_wishlist_products":"1",
        "array":values,
        "customer_id":"152698"
    ]

Alamofire.request(Services.deleteWishlist,method: .get,parameters: params, headers:nil).responseJSON { (response) in
                            if response.result.error == nil{
                                print(response)
                            }else{
                                print(response.result.error?.localizedDescription ?? "")
                            }
        }
    }

字符串

相关问题