gpt4 book ai didi

arrays - 快速访问数组中的字典值

转载 作者:可可西里 更新时间:2023-10-31 23:58:16 27 4
gpt4 key购买 nike

我有一个数组,其中包含我的 TableView 部分的数据

let menuItems : Dictionary<String,Dictionary<String,String>>[] = [
[
"data" : [
"name":"test",
"image":"test.png"
]
],
[
"data" : [
"name":"test2",
"image":"test2.png"
]
]
]

我正在尝试使用下标访问它

func tableView(tableView: UITableView!, titleForHeaderInSection section: Int) -> String! {
return menuItems[section]["data"]["name"]
}

出现错误

Could not find member 'subscript'

我在stackoverflow上看了很多类似的问题,但还是没搞明白怎么解决。我试图用“!”打开包装符号并使用了另一个变量 - 没有结果。

你能解释一下它是如何工作的吗?

最佳答案

println(menuItems[0]["data"]!["name"])

简答:menuItems[0]["data"] 返回可选字典。

您可以查看下面的 REPL 输出以了解问题。

  1. 设置对象。
  2. 表明该数组返回一个正则字典。如果索引超出范围,将抛出错误而不是返回可选字典。
  3. 显示访问字典中不存在的键将返回 nil
  4. 显示访问字典中的键将返回其值类型的可选值。例如,如果字典在其值中存储字符串,它会返回一个字符串吗?当索引到。
  5. 表明我们不能在可选字典上使用下标。
  6. 表明我们可以强制可选字典成为字典,因为我们知道它不是零。 REPL 向我们展示了新的返回类型是 Dictionary<String, String>
  7. 表明我们可以使用下标获取最内层的值,这会向我们返回一个可选的字符串。可选字符串是可打印的,所以我上面的代码不需要第二个 ! .
  8. 表明如果我们将两个字典返回类型都强制为它们的非可选类型,我们将得到一个常规值(一个字符串)。

在实际代码中,您可能想要检查可选值,并相应地处理 nils。

1> 让菜单:Dictionary<String, Dictionary<String, String>>[] = [["dict1": ["key": "val"]], ["dict2": ["key": "val"]]]

menu: Dictionary<String, Dictionary<String, String>>[] = size=2 {
[0] = {
[0] = {
key = "dict1"
value = {
[0] = {
key = "key"
value = "val"
}
}
}
}
[1] = {
[0] = {
key = "dict2"
value = {
[0] = {
key = "key"
value = "val"
}
}
}
}
}

2>菜单[0]

$R1: Dictionary<String, Dictionary<String, String>> = {
[0] = {
key = "dict1"
value = {
[0] = {
key = "key"
value = "val"
}
}
}
}

3> 菜单[0]["键"]

$R2: Dictionary<String, String>? = nil

4> 菜单[0]["dict1"]

$R3: Dictionary<String, String>? = Some {
[0] = {
key = "key"
value = "val"
}
}

5> 菜单[0]["dict1"]["key"]

REPL:6:1: error: could not find member 'subscript'
menu[0]["dict1"]["key"]
^~~~~~~~~~~~~~~~~~~~~~~

6> 菜单[0]["dict1"]!

$R4: Dictionary<String, String> = {
[0] = {
key = "key"
value = "val"
}
}

7> 菜单[0]["dict1"]!["key"]

$R5: String? = "val"

8> 菜单[0]["dict1"]!["key"]!

$R6: String = "val"

关于arrays - 快速访问数组中的字典值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24142785/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com