循环 AnyHashable 字典

Looping an AnyHashable Dictionary

我正在尝试循环从 Http 响应中获得的信息,但访问数据时遇到问题。 这是目前我正在尝试循环的信息:

我试图使用 For 来访问响应的不同元素,但无法弄清楚如何访问字典中的元素,这是我正在使用的代码:

var dictionaryMessage: NSMutableDictionary?
            do {
                if let data = result?.data(using: .utf8) {
                    dictionaryMessage = try JSONSerialization.jsonObject(with: data, options: .mutableContainers) as? NSMutableDictionary
                    if(dictionaryMessage?["precios"] != nil){
                        var element = dictionaryMessage?["precios"]
                        for (index, element) in element![0]{
                            print("index" + index + "element:" + element)
                        }
                    }
                }
            } catch {
                //error handling
            }
            

我希望找到访问此数据的正确方法,因为目前我收到此错误:

你可以试试

var element = dictionaryMessage!["precios"] as! [[String:Any]]

代码中存在一些问题。 Swift 是一种强类型语言,使用 NS... 集合类型你会得到未指定的 Any(Object) 并且你必须有条件地向下转换所有类型。

precios 的值是一个 数组 ,具有 String 个键和 Int 个值,因此封闭字典 dictionaryMessage[String:[[String:Int]]]

var dictionaryMessage : [String:[[String:Int]]]?
do {
    if let data = result?.data(using: .utf8) {
        dictionaryMessage = try JSONSerialization.jsonObject(with: data) as? [String:[[String:Int]]]
        if let precios = dictionaryMessage?["precios"] {
            for item in precios {
                for (index, element) in item {
                    print("index: \(index) element: \(element)")
                }
            }
        }
    }
} catch {
    print(error)
}

或者如果数组中只有一个元素

do {
    if let data = result?.data(using: .utf8) {
        dictionaryMessage = try JSONSerialization.jsonObject(with: data) as? [String:[[String:Int]]]
        if let precios = dictionaryMessage?["precios"]?.first {
            for (index, element) in precios {
                print("index: \(index) element: \(element)")
            }
        }
    }
} catch {
    print(error)
}