无法使用“String”类型的索引为“[[String : AnyObject]]”类型的值添加下标

问题描述 投票:0回答:2

我正在尝试获取特定位置的温度,但在尝试从 JSON 中提取信息时,我会发现此错误:

无法使用“String”类型的索引为“[[String : AnyObject]]”类型的值添加下标

代码:

let json = try JSONSerialization.jsonObject(with: data!, options: .mutableContainers) as! [String : AnyObject]
            
            if let mainDictionary = json["main"] as? [[String : AnyObject]]
            {
                
                if let temp = mainDictionary["temp"] as! String
                {
                    print(temp)                                           
                    
                }
            }

错误出现在以下行:

if let temp = mainDictionary["temp"] as! String

我尝试了在 slack 上找到的多种“解决方案”,但似乎都不起作用......

ios json swift dictionary
2个回答
2
投票

您正在将类型转换为:

[[String: AnyObject]]

当你应该像这样投射它时:

[String: AnyObject]

当您希望将类型转换为包含强键和任何对象作为值的字典数组时,您执行此操作的方式会将类型转换为包含字典的数组的数组。

希望这有帮助:)


1
投票

应该是

[String : AnyObject]
?您将其转换为
[[String : AnyObject]]
表示字典数组

© www.soinside.com 2019 - 2024. All rights reserved.