一尘不染

Swift字典获取价值的关键

swift

我正在使用[UIImage:UIImage]类型的快速字典,并且正在尝试查找给定值的特定键。在Objective-
C中,我可以使用allKeysForValue,但是Swift字典似乎没有这种方法。我应该使用什么?


阅读 329

收藏
2020-07-07

共1个答案

一尘不染

Swift 3:针对双射字典的特殊情况,性能更高

如果反向字典查找用例涵盖了在键和值之间具有一对一关系的双射字典,那么穷举收集filter操作的另一种方法是使用更快的短路方法来找到 某个
键(如果存在)。

extension Dictionary where Value: Equatable {
    func someKey(forValue val: Value) -> Key? {
        return first(where: { $1 == val })?.key
    }
}

用法示例:

let dict: [Int: String] = [1: "one", 2: "two", 4: "four"]

if let key = dict.someKey(forValue: "two") { 
    print(key)
} // 2
2020-07-07