字典 – 如何在Swift中访问深度嵌套的字典
发布时间:2020-12-14 05:51:46 所属栏目:百科 来源:网络整理
导读:我的应用程序中有一个非常复杂的数据结构,我需要操作它。我试图跟踪一个玩家在这个花园里有多少类型的错误。有十种类型的bug,每种都有十种图案,每种图案都有十种颜色。所以有1000个独特的bug可能,我想跟踪这些类型的玩家有多少个。嵌套字典看起来像: va
我的应用程序中有一个非常复杂的数据结构,我需要操作它。我试图跟踪一个玩家在这个花园里有多少类型的错误。有十种类型的bug,每种都有十种图案,每种图案都有十种颜色。所以有1000个独特的bug可能,我想跟踪这些类型的玩家有多少个。嵌套字典看起来像:
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"]!++ 我想你知道可选项,但是要清楚,如果您确定密钥存在于字典中,请使用感叹号,否则最好使用问号: bugsDict["ladybug"]?["spotted"]?["red"]?++ 附录:这是我在操场上用于测试的代码: 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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |