Swift:访问字典数组中的数组值

4

我目前在尝试从一个字典数组中的数组中获取值,这些数组嵌套在另一个字典数组中。基本上,我想要获取存储在字典数组中的数组的第一个“[0]”值。以下是我的代码:

var array = [[String:Any]]()
var hobbies:[String] = []
var dict = [String:Any]()

viewDidLoad 代码:

dict["Name"] = "Andreas"
hobbies.append("Football", "Programming")
dict["Hobbies"] = hobbies
array.append(dict)

///- 但是,我只能显示名称,以下是代码:

var name = array[0]["Name"] as! String
  • 但我也希望能够显示存储在名称中的数组的第一个值。这怎么可能呢?

是的,我知道还有其他选项可以实现这个方法,但这些值来自Firebase(子路径)——我只需要找到一种方法来显示字典数组中的数组。

提前感谢您的帮助。


但是我想要能够显示存储在名称下的数组的第一个值?你的意思是键和值吗? - Kumar KL
2个回答

6

如果您知道"Hobbies"是一个有效的键,并且它的字典值是一个String数组,那么您可以直接访问该数组中的第一项:

let hobby = (array[0]["Hobbies"] as! [String])[0]

但是,如果"Hobbies"不是一个有效的键或者值不是[String],那么这个程序就会崩溃。

更安全的访问数组的方法是:

if let hobbies = array[0]["Hobbies"] as? [String] {
    print(hobbies[0])
}

太好了!正是我需要的!非常感谢你! :-) - askaale

2
如果使用模型类/结构体,一切都会变得更加简单。

给定这个模型结构体

struct Person {
    let name: String
    var hobbies: [String]
}

还有这个字典

var persons = [String:Person]()

这是将人添加到字典中的方法。
let andreas = Person(name: "Andreas", hobbies: ["Football", "Programming"])
persons[andreas.name] = Andreas

这就是如何获取它的方法。
let aPerson = persons["Andreas"]

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接