2

Optional<Dictionary<String, AnyObject>> を拡張したいと思います。どうすればこれを書くことができますか?

私はそれが次のようなものになることを期待していました

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

4

1 に答える 1

5

ドット構文を使用して、Wrapped のキーと値にアクセスします。

extension Optional where Wrapped: DictionaryLiteralConvertible, Wrapped.Key: StringLiteralConvertible, Wrapped.Value: AnyObject {
    func doSomething() {
        print("did it")
    }
}

今、あなたはこれを呼び出すことができます: Optional(["asdf":123]).doSomething()

しかし、これではありません: Optional([123:123]).doSomething()

于 2016-02-17T10:28:47.297 に答える