gpt4 book ai didi

arrays - Swift - 更新嵌套字典中特定项目的值

转载 作者:行者123 更新时间:2023-11-30 10:57:13 25 4
gpt4 key购买 nike

我有一个表格 View ,每个单元格都应链接到字典内的数组。

var buttonAction : [String: [ButtonAction]] = [:]

下面是buttonAction的结构

struct ButtonAction: Codable {
var action: String
var array_linked_of_buttons: [[String:String]]

init(action: String, array_linked_of_buttons: [[String:String]]) {
self.action = action
self.array_linked_of_buttons = array_linked_of_buttons
}
}

解释整个代码有点复杂,但是当我将两个按钮连接在一起时,我可以获得变量“singleAction”的数据,然后可以将其添加到按钮操作字典“array_linked_of_buttons”中。

let singleAction = [linkedButtonUUID: connectorMarker.UUIDpic.uuidString, linkedButtonCategory: "", linkedButtonName: connectorMarker.name]

let mainMarkerAction = mainMarker.buttonAction["button actions array"]!

for existingMarker in mainMarkerAction {
actionArray.append(existingMarker)
}

var actionSub = actionArray[indexRowTag].array_linked_of_buttons
if let addAction = actionSub.filter({$0[linkedButtonUUID] == connectorMarker.UUIDpic.uuidString}).first {
print("MARKER Exists", addAction)
} else {
actionSub.append(singleAction)
print("UPDATED MARKER", actionSub)
}

let action = ButtonAction(action: actionArray[indexRowTag].action, array_linked_of_buttons: actionSub)


//ISSUE--?? mainMarker.buttonAction.updateValue(VALUE forKey: "button actions array")

saveData()

我可以计算出字典中的哪个项目需要编辑,但如何更新该特定值?我真的很困惑,它只是创建了一个新项目,但我想更新以前的项目。

例如,我想附加项目 0 的“array_linked_buttons”,并且有 4 个项目而不是 3 个。

这就是我的字典的样子,如果这也有帮助的话 enter image description here

我已经搜索了其他问题,但我仍然解决了。非常感谢任何为我指明正确方向的帮助!

最佳答案

之所以发生复制而不是更改值,是因为您对 ButtonAction 使用 struct,它具有值语义,并且在分配给任何变量时可以快速创建副本。

您需要使用class来代替。类具有引用语义,因此它不会在分配给变量时创建新实例,因此您将能够更新所需实例的属性。

关于arrays - Swift - 更新嵌套字典中特定项目的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53826363/

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