我有一个可选值,我想用它来索引一个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
}
答案 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
现在是可选的。