一尘不染

检查键是否存在于[Type:Type?]类型的字典中

swift

如何检查字典中是否存在键?我的字典是类型的[Type:Type?]

我不能简单地检查一下dictionary[key] == nil,因为这可能是由值所导致的nil

有任何想法吗?


阅读 277

收藏
2020-07-07

共1个答案

一尘不染

实际上,您的测试dictionary[key] == nil 用于检查字典中是否存在键。true如果该值设置为,则不会产生nil

let dict : [String : Int?] = ["a" : 1, "b" : nil]

dict["a"] == nil // false,     dict["a"] is .Some(.Some(1))
dict["b"] == nil // false !!,  dict["b"] is .Some(.None)
dict["c"] == nil // true,      dict["c"] is .None

要区分“字典中不存在键”和“键的值为零”,您可以执行嵌套的可选分配:

if let val = dict["key"] {
    if let x = val {
        println(x)
    } else {
        println("value is nil")
    }
} else {
    println("key is not present in dict")
}
2020-07-07