Swift 中不区分大小写的字典

2024-04-27

Given a Dictionary whose Key属于类型String,有没有办法以不区分大小写的方式访问该值?例如:

let dict = [
    "name": "John",
    "location": "Chicago"
]

有办法打电话吗dict["NAME"], dict["nAmE"]等,仍然得到"John"?


更干净的方法,swift 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"
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Swift 中不区分大小写的字典 的相关文章

随机推荐