在Swift中枚举字典

时间:2018-09-09 16:25:14

标签: swift dictionary enumeration

我想我注意到Swift字典枚举实现中的错误。

此代码段的输出:

var someDict:[Int:String] = [1:"One", 2:"Two", 3:"Three"]
for (key, value) in someDict.enumerated() {
   print("Dictionary key \(key) - Dictionary value \(value)")
}

应为:

Dictionary key 2 - Dictionary value Two
Dictionary key 3 - Dictionary value Three
Dictionary key 1 - Dictionary value One

而不是:

Dictionary key 0 - Dictionary value (key: 2, value: "Two")
Dictionary key 1 - Dictionary value (key: 3, value: "Three")
Dictionary key 2 - Dictionary value (key: 1, value: "One")

任何人都可以解释这种行为吗?

1 个答案:

答案 0 :(得分:3)

不是错误,是由于使用错误的API引起的混乱。

使用这种( 与词典相关的 )语法,您可以获得预期的结果

for (key, value) in someDict { ...

其中

  • key是字典键
  • value是字典值。

使用( 与数组相关的 )语法

for (key, value) in someDict.enumerated() { ...

实际上是

for (index, element) in someDict.enumerated() { ...

字典被视为元组和

的数组
  • key索引
  • value元组 ("key": <dictionary key>, "value": <dictionary value>)