Я пытаюсь реализовать расширение Dictionary
, и я хочу обрабатывать необязательные значения. Но что бы я ни делал, если я использую свой метод в словаре [String: String?]
, он необязательно связывает это значение. Как вы пишете расширение для словаря, который изящно обрабатывает необязательные значения?
Рассмотрим следующее расширение:
extension Dictionary {
func someMethod() {
for (key, value) in self {
if let valueString = value as? String {
println(" \(key) = \(valueString)")
} else {
println(" \(key) = \(value) cannot be cast to `String`")
}
}
}
}
Итак, рассмотрим следующий код:
let dictionary: [String: AnyObject?] = ["foo": "bar"]
dictionary.someMethod()
И он с любопытством сообщает
foo = Optional(bar) cannot be cast to `String`
Я могу написать метод без расширения, который обрабатывает параметры словаря с необязательными значениями, но не вижу, как это сделать как расширение Dictionary
.