扩展可选<dictionary <string,anyobject =“”>&gt;

时间:2016-02-17 09:43:54

标签: ios swift dictionary swift2 anyobject

我想对Optional&lt; Dictionary&lt; String,AnyObject&gt;&gt;进行扩展。我怎么写这个?

我期待它像

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>'

1 个答案:

答案 0 :(得分:5)

使用点语法访问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()