gpt4 book ai didi

ios - 快速将元素添加到复杂的嵌套集合中

转载 作者:搜寻专家 更新时间:2023-11-01 07:23:38 26 4
gpt4 key购买 nike

我一直在练习 Swift 中的集合。实际上,我将来自在线 JSON 源的数据存储到字典/数组中。我正在尝试向以下集合添加一个新元素:

testDict1: Dictionary<String,Dictionary<Int,Dictionary<String, AnyObject>>>

我用以下元素初始化它(它可能是一个空数组):

testDict1 =  ["fireMagic":[
0:["name":"Basic attack","damage":100],
1:["name":"Super attack","damage":200, "lvlReq": 20],
2:["name":"Mega attack","damage":400, "lvlReq": 40]]]

我想从另一个数组“更新”testDict1 中的数据(如果需要替换并添加新行),例如:

testDict1 =  ["fireMagic":[
0:["name":"Basic attack","damage":100],
1:["name":"Super attack","damage":200, "lvlReq": 20],
2:["name":"Mega attack","damage":400, "lvlReq": 40]
3:["name":"Insane attack","damage":1000, "lvlReq": 60]]]

问题 1

如何将下面的元素附加到 testDict1:

3:["name":"Insane attack","damage":1000, "lvlReq": 60] //with "FireMagic" as a key.

我遇到了不同的错误,我无法让它工作。我敢肯定它一定比我尝试过的方法更复杂,您可能有解决方案来结束我的痛苦 :)

问题 2

如果我需要在testDict1中添加其他功能,例如与“FireMagic”结构相同的“WaterMagic”,我该怎么办。

testDict1 =  ["fireMagic":[
0:["name":"Basic attack","damage":100],
1:["...":"...","...":"..."]],
["waterMagic":[
0:["name":"Basic attack","damage":100]]

预先感谢您在我的学习任务中提供的帮助!

最佳答案

问题 1:

不安全:

testDict1["fireMagic"]![3] = ["name":"Insane attack","damage":1000, "lvlReq": 60]

安全:

if let _ = testDict1["fireMagic"] {
testDict1["fireMagic"]![3] = ["name":"Insane attack","damage":1000, "lvlReq": 60]
}

安全简单(感谢@dfri):

testDict1["fireMagic"]?[3] = ["name":"Insane attack","damage":1000, "lvlReq": 60]

问题 2:

testDict1["waterMagic"] = [0:["name":"Test attack","damage":100]]

但我会建议使用数组、枚举和结构而不是字典,它处理起来更简单,也更安全:

enum MagicType {
case Water
case Fire
}

struct Magic {
let magic: MagicType
let name: String
let damage: Int
let lvlReq: Int?
}

创建对象数组:

var fireMagics = [Magic(magic: .Fire, name: "Basic attack", damage: 100, lvlReq: nil), Magic(magic: .Fire, name: "Super attack", damage: 200, lvlReq: 20), Magic(magic: .Fire, name: "Mega attack", damage: 100, lvlReq: 40)]

通过索引访问数组中的对象:

fireMagics[0]
fireMagics[1]
fireMagics[2]

等等

向数组中添加一个对象:

fireMagics.append(Magic(magic: .Fire, name: "Insane attack", damage: 1000, lvlReq: 60))

创建不同类型的 Magic 对象:

var waterMagics = [Magic(magic: .Water, name: "Test attack", damage: 100, lvlReq: nil)]

关于ios - 快速将元素添加到复杂的嵌套集合中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37394855/

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