扩展可选<Dictionary<String, AnyObject>>
Extending Optional<Dictionary<String, AnyObject>>
我想对 Optional> 进行扩展。我怎么写这个?
我原以为它会是这样的
extension Optional where
Wrapped : Dictionary,
Key : String,
Value : AnyObject { ... }
但它希望 Dictionary 直接获取参数,即使这可行,我预计它会抱怨 String 不是协议。所以我尝试
extension Optional where Wrapped : Dictionary<String, AnyObject> { ... }
但这里抱怨 type 'Wrapped' constrained to non-protocol type 'Dictionary<String, AnyObject>'
使用点语法访问 Wrapped 的 Key 和 Value。
extension Optional where Wrapped: DictionaryLiteralConvertible, Wrapped.Key: StringLiteralConvertible, Wrapped.Value: AnyObject {
func doSomething() {
print("did it")
}
}
现在你可以调用它:
Optional(["asdf":123]).doSomething()
但不是这个:
Optional([123:123]).doSomething()
我想对 Optional
我原以为它会是这样的
extension Optional where
Wrapped : Dictionary,
Key : String,
Value : AnyObject { ... }
但它希望 Dictionary 直接获取参数,即使这可行,我预计它会抱怨 String 不是协议。所以我尝试
extension Optional where Wrapped : Dictionary<String, AnyObject> { ... }
但这里抱怨 type 'Wrapped' constrained to non-protocol type 'Dictionary<String, AnyObject>'
使用点语法访问 Wrapped 的 Key 和 Value。
extension Optional where Wrapped: DictionaryLiteralConvertible, Wrapped.Key: StringLiteralConvertible, Wrapped.Value: AnyObject {
func doSomething() {
print("did it")
}
}
现在你可以调用它:
Optional(["asdf":123]).doSomething()
但不是这个:
Optional([123:123]).doSomething()