我正在尝试实现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
.