【问题标题】:Swift: Accessing array value in array of dictionariesSwift:访问字典数组中的数组值
【发布时间】:2016-06-13 10:50:08
【问题描述】:

我目前正在努力从字典数组中的数组中获取值。基本上我想从存储在字典数组中的数组中获取第一个“[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(子路径) - 但我只需要找到一种方法来显示字典数组中的数组。

提前致谢。

【问题讨论】:

  • 但我希望能够显示以名称存储的数组中的第一个值??你的意思是键和值??

标签: arrays swift dictionary


【解决方案1】:

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

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

但如果"Hobbies" 不是有效的键或值不是[String],则会崩溃。

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

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

【讨论】:

  • 太棒了!正是我需要的!非常感谢! :-)
【解决方案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"]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-17
    • 2023-04-04
    • 2015-01-10
    相关资源
    最近更新 更多