如何将字典数组追加到另一个数组

时间:2019-02-12 05:25:45

标签: ios swift4

我试图将来自服务器的字典数组追加到全局声明的数组。但是我收到类似“无法将类型'[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)

4 个答案:

答案 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)

Here pro is appending a new element [String : String]

解决此迭代

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
}

答案与:Append to array in [String: Any] dictionary structure

答案 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)