【发布时间】:2019-03-17 17:14:01
【问题描述】:
在使用 Alamofire 发送 POST 请求时,我需要帮助来创建自定义正文。
我正在发送 API 产品。有两种类型的产品。第一种类型只有数量,第二种类型 - 不同的数量(size_id)和与每个 size_id 匹配的数量。
最终的主体应该是这样的:
"factory_id": "1"
"order_products[0][product_id]": "1"
"order_products[0][size_id]": "2"
"order_products[0][quantity]": "10"
"order_products[1][product_id]": "1"
"order_products[1][size_id]": "3"
"order_products[1][quantity]": "10"
"order_products[1][product_id]": "2"
"order_products[1][size_id]": "2"
"order_products[1][quantity]": "10"
"order_products[2][product_id]": "3"
"order_products[2][quantity]": "10"
这是我目前取得的成就:
var createOrderBody = [String: Any]()
let productIds = ["1", "2", "3"]
var body = [String: Any]()
var quantity = ["1" : "10", "2": "10"]
var noIdQuantity = ["10"]
var finalBody = [String: Any]()
func formBody(products: String, factoryId: String, productId: String, size_id: String, quantity: String) -> [String: Any] {
createOrderBody["factory_id"] = factoryId
createOrderBody["order_products[\(products)][product_id]"] = productId
createOrderBody["order_products[\(products)][size_id]"] = size_id
createOrderBody["order_products[\(products)][quantity]"] = quantity
return createOrderBody
}
for (index, value) in productIds.enumerated() {
for (id, size) in quantity {
print(id)
print(size)
body = formBody(products: String(index), factoryId: "1", productId: String(value), size_id: id, quantity: size)
print("Body quantity - ", body)
}
}
我得到的结果是:
"factory_id": "1",
"order_products[0][product_id]": "1"
"order_products[0][size_id]": "2",
"order_products[0][quantity]": "10",
"order_products[1][product_id]": "2",
"order_products[1][size_id]": "2",
"order_products[1][quantity]": "10",
"order_products[2][product_id]": "3",
"order_products[2][size_id]": "2",
"order_products[2][quantity]": "10",
如您所见,我几乎达到了预期的效果,但问题是它只添加了quantity 字典的最后一个元素,而忽略了其他值。另外,我不知道如何为产品添加数量,没有size_id
另外,我知道将 for in 循环放在其他 for in 循环中不是一个好习惯,但我是开发新手,这是我想出的最佳主意。
对于这个问题的任何帮助,我将不胜感激,因为我已经与它斗争了将近一个星期。
非常感谢,周末愉快!
【问题讨论】:
标签: arrays swift dictionary post alamofire