我的应用程序中有一个非常复杂的数据结构,我需要对其进行操作。我正在尝试跟踪玩家的花园中有多少种错误。虫子有十种,每种有十种图案,每种图案有十种颜色。因此可能存在 1000 个独特的错误,我想跟踪玩家拥有的每种类型的错误数量。嵌套字典如下所示:
var colorsDict: [String : Int]
var patternsDict: [String : Any] // [String : colorsDict]
var bugsDict: [String : Any] // [String : patternsDict]
我没有收到任何关于此语法的错误或投诉。
当我想增加玩家的错误收集时,请执行以下操作:
bugs["ladybug"]["spotted"]["red"]++
我收到此错误:字符串无法转换为 'DictionaryIndex'错误的胡萝卜位于第一个字符串下方。
另一篇类似的文章建议使用“as Any?”在代码中,但是该帖子的OP只有一个深度的字典,因此可以使用以下命令轻松做到这一点: dict["string"] as Any? ...
我不知道如何使用多级字典来做到这一点。任何帮助,将不胜感激。
使用字典时,您必须记住字典中可能不存在键。因此,字典总是返回选项。因此,每次通过键访问字典时,您都必须按如下方式在每个级别展开:
bugsDict["ladybug"]!["spotted"]!["red"]!++
我假设您了解可选值,但为了清楚起见,如果您 100% 确定字典中存在该键,请使用感叹号,否则最好使用问号:
bugsDict["ladybug"]?["spotted"]?["red"]?++
Addendum:这是我在操场上测试时使用的代码:
var colorsDict = [String : Int]()
var patternsDict = [String : [String : Int]] ()
var bugsDict = [String : [String : [String : Int]]] ()
colorsDict["red"] = 1
patternsDict["spotted"] = colorsDict
bugsDict["ladybug"] = patternsDict
bugsDict["ladybug"]!["spotted"]!["red"]!++ // Prints 1
bugsDict["ladybug"]!["spotted"]!["red"]!++ // Prints 2
bugsDict["ladybug"]!["spotted"]!["red"]!++ // Prints 3
bugsDict["ladybug"]!["spotted"]!["red"]! // Prints 4
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)