Case insensitive Dictionary in 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中的不区分大小写字典的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!