如何使用可选键访问字典值?

时间:2017-05-10 11:12:10

标签: swift swift-dictionary

我有一个可选值,我想用它来索引一个Dictionary。

如果不必使用if let / else“弄脏”我的代码,我该怎么做呢?

e.g。

if
    let key = type(of: self).notificationValueKeys[notification.name],
    let value = notification.userInfo?[key] {

    self.value = value

} else {

   self.value = nil
}

1 个答案:

答案 0 :(得分:2)

执行此操作的一种优雅方法是使用Dictionary的扩展名,以允许[]上的下标(Dictionary)运算符使用可选键:

/**
 convenience subscript operator for optional keys

 - parameter key
 - returns: value or nil
 */
subscript(key: Key?) -> Value? {

    guard let key = key else { return nil }
    return self[key]
}

这允许上面的代码变为:

let key = type(of: self).notificationValueKeys[notification.name]
let value = notification.userInfo?[key]

self.value = value

let value现在是可选的。