在Swift中按键获取字典中的项目索引

Pri*_*ico 4 swift

我这样做是为了遍历我的字典,直到我匹配密钥.我的字典被定义为[Int:String]

var index = 0
for (key, value) in mylist! {
    if key == property.propertyValue as! Int {
        // use index here
    }
    index += 1
}
Run Code Online (Sandbox Code Playgroud)

有一个更好的方法吗?我看到了过滤的例子(类似下面的例子),但我不知道如何使它与字典一起工作.我可以使用这样的东西来找到项目的索引吗?或者还有另一种方式吗?

mylist.filter{$0.key == 1}
Run Code Online (Sandbox Code Playgroud)

更新: 这有效:

let index = Array(mylist!.keys).index(of: 1)
Run Code Online (Sandbox Code Playgroud)

但这不是:

let index = mylist!.index(forKey: 1)
Run Code Online (Sandbox Code Playgroud)

看来他们俩都应该工作.我想知道为什么第二个没有.

vad*_*ian 6

字典是无序集合类型,没有索引.

您可以直接通过密钥获取值

let value = mylist[property.propertyValue as! Int]
Run Code Online (Sandbox Code Playgroud)

  • @Primico:听起来好像你依赖于某个字典条目的顺序.您可能应该使用数组. (3认同)