gpt4 book ai didi

arrays - 附加到 [String : Any] dictionary structure 中的数组

转载 作者:IT王子 更新时间:2023-10-29 05:23:16 26 4
gpt4 key购买 nike

组装传递给 GRMustache.swift 的数据负载为了呈现 mustache 模板,我处于需要将数据附加到先前在字典中定义的数组的场景中。

我的数据结构开始于:

var data: [String: Any] = [
"key1": "example value 1",
"key2": "example value 2",
"items": [
// I need to append here later
]
]

items key 对是我稍后需要在循环中追加的集合。

要添加到 data["items"] 数组,我正在尝试类似的方法:

for index in 1...3 {
let item: [String: Any] = [
"key": "new value"
]

data["items"].append(item)
}

此错误,因为 Any? 类型的值没有成员 append,并且二元运算符 += 不能应用于类型的操作数Any?[String : Any]

这是有道理的,因为我需要转换要追加的值;但是,我无法改变数组。

转换为数组,强制向下转换是否报错:

(data["items"] as! Array).append(item)

'Any?' is not convertible to 'Array<_>'; did you mean to use 'as!' to force downcast?

Cannot use mutating member on immutable value of type 'Array<_>'

似乎我的 Actor 阵容是错误的;或者,也许我以错误的方式解决了这个问题。

关于如何随时间迭代地填充data["items"] 有什么建议吗?

最佳答案

data[Items] 的类型不是 Array但实际上Array<[String: Any]> .

您可能会把它压缩成更少的步骤,但我更喜欢多个步骤的清晰度:

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
}

关于arrays - 附加到 [String : Any] dictionary structure 中的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41518492/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com