Case insensitive Dictionary in Swift(SWIFT中的不区分大小写字典)

本文介绍了SWIFT中的不区分大小写字典的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

给定Dictionary谁的Key类型为String,是否有办法以不区分大小写的方式访问值?例如:
let dict = [
    "name": "John",
    "location": "Chicago"
]

是否可以调用dict["NAME"], dict["nAmE"]等,仍然获取"John"

推荐答案

更干净的方法,快速4:

extension Dictionary where Key == String {

    subscript(caseInsensitive key: Key) -> Value? {
        get {
            if let k = keys.first(where: { $0.caseInsensitiveCompare(key) == .orderedSame }) {
                return self[k]
            }
            return nil
        }
        set {
            if let k = keys.first(where: { $0.caseInsensitiveCompare(key) == .orderedSame }) {
                self[k] = newValue
            } else {
                self[key] = newValue
            }
        }
    }

}

// Usage:
var dict = ["name": "John"]
dict[caseInsensitive: "NAME"] = "David" // overwrites "name" value
print(dict[caseInsensitive: "name"]!) // outputs "David"

这篇关于SWIFT中的不区分大小写字典的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!