Как использовать необязательный ключ для доступа к значению словаря?
У меня есть необязательное значение, которое я хотел бы использовать для индексирования словаря.
Как я могу сделать это без необходимости "пачкать" мой код if let
/else
?
например
if
let key = type(of: self).notificationValueKeys[notification.name],
let value = notification.userInfo?[key] {
self.value = value
} else {
self.value = nil
}
1 ответ
Один из элегантных способов сделать это с расширением 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
теперь необязательно.