我试图将来自服务器的字典数组追加到全局声明的数组。但是我收到类似“无法将类型'[Any]'的值转换为预期参数类型'[String:Any]的错误” “”如果有人帮助我,那就太好了。谢谢!
var pro = [[String:Any]]()
var productsdetails = Array<Any>()
productsdetails = userdata.value(forKey: "products") as! Array
print("response\(productsdetails)")
self.pro = self.pro.append(productsdetails)
print(self.pro)
答案 0 :(得分:1)
像下面一样使用此代码,我希望它能起作用
var pro = [[String:Any]]()
if let productsdetails = userdata.value(forKey: "products") as? [[String:Any]] {
print("response\(productsdetails)")
self.pro.append(productsdetails)
print(self.pro)
}
答案 1 :(得分:0)
解决此迭代
var pro = [[String:Any]]()
if let productsdetails = userdata.value(forKey: "products") as? [[String: Any]] {
for details in productsdetails {
pro.append(details)
}
}
或者,如果您不想迭代
,则可以直接使用self.pro = productsdetails
**图像显示的是[String:String],因为我使用的是[String:String]而不是[String:Any] *
答案 2 :(得分:0)
您可以尝试以下操作:(Swift-4.2)
var data: [String: Any] = [
"key1": "example value 1",
"key2": "example value 2",
"items": []
]
for index in 1...3 {
let item: [String: Any] = [
"key": "new value"
]
// get existing items, or create new array if doesn't exist
var existingItems = data["items"] as? [[String: Any]] ?? [[String: Any]]()
// append the item
existingItems.append(item)
// replace back into `data`
data["items"] = existingItems
}
答案 3 :(得分:0)
您能告诉我们您的回答,其中包含关键产品吗?由于变量pro和productdetails不匹配。正如我所见,专业人士持有的值为“字典数组,键为字符串类型,值作为任何类型”,它的上方又是数组,productdetails期望的是任何类型的数组,而不是字典类型的数组。假设您的产品具有“字符串类型数组”,甚至可以是类对象类型,则可以按以下方式进行操作。
var pro = Array<Any>() //Or You can make Array<String>() or Array<CustomClass>()
var userdata:[String:[String]] = ["products":["One","Two","Three"]]
var productsdetails = Array<Any>()
productsdetails = userdata["products"] ?? []
print("response\(productsdetails)")
pro.append(productsdetails)