Alamofire 多参数字典
Posted
技术标签:
【中文标题】Alamofire 多参数字典【英文标题】:Alamofire multi parameters dictionary 【发布时间】:2017-03-10 22:05:00 【问题描述】:您好,我正在尝试将数组中称为“插件”的 alamofire 参数提供给...数组可以包含 3 个或 X 个项目。我正在尝试使用 FOR 循环将字典广告到另一组项目,但是......它只显示最后一个......似乎它覆盖了前一个。我尝试了我所知道的一切……甚至尝试使用 SwiftyJSON 框架……但是 alamofire 只采用纯字典类型。
let itemsArr = ["Skirts", "Coat", "Shirt"]
let priceArr = ["7.00", "7.00", "2.90"]
let quantityArr = ["2", "5", "1"]
let personalInfo: [String : Any] = [
"phone" : phone,
"notes" : descNote
]
var para: [String: Any] = [
"pieces" : pieces,
"personal_info" : personalInfo,
"payment_method" : paymentMethod
]
for i in 0..<itemsArr.count
let addons: [String: Any] = [
"name":itemsArr[i],
"price":priceArr[i],
"quantity":quantityArr[i]
]
print(addons)
para["addons"] = addons
我需要这样的东西
"pieces": 12,
"personal_info":
"phone": "+420783199102",
"notes": "Plz be fast, I need to play Game of War"
,
"payment_method": "cod",
"addons": [
"name": "Select day Tue",
"price": 3.5,
"quantity": 1
,
"name": "Select day Thu",
"price": 3.5,
"quantity": 1
]
【问题讨论】:
【参考方案1】:您的问题是,在循环中,您每次迭代都会用单个结果覆盖变量。这就是为什么只剩下最后一个给你的原因。 你应该做的是:
//create an array to store the addons outside of the loop
var addons: [[String: Any]] = []
for i in 0..<itemsArr.count
let addon: [String: Any] = [
"name":itemsArr[i],
"price":priceArr[i],
"quantity":quantityArr[i]
]
//append a single addon to our array prepared before the loop
addons.append(addon)
//once we gathered all addons, append results to `para` dictionary
para["addons"] = addons
【讨论】:
非常感谢!我也在尝试使用数组中的字典,但语法不好,所以我无法追加集合。无论如何,你让我免于头疼。 ;-)以上是关于Alamofire 多参数字典的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Alamofire,swift 3 中将字典作为参数发送
如何在多部分 API 中发送 [String:Any] 字典?
如何在 Alamofire Swift 中发送带有数组的字典