4

我正在尝试获取特定的 Dictionary 类型以符合协议。

typealias FirebaseDictionary = Dictionary<String, FirebaseValue>

我想符合FirebaseValue协议

protocol FirebaseValue {
    // stuff here
}

我试过这个

extension FirebaseDictionary: FirebaseValue {

}

但我得到了一个错误Constrained extension must be declared on the unspecialized generic type 'Dictionary' with constraints specified by a 'where' clause。所以我现在有了这个

extension Dictionary where Key == String, Value == FirebaseValue {

}

但如果可能的话,我无法弄清楚使其符合协议的正确语法。如果不可能,还有其他方法可以达到相同的效果吗?我试图只允许特定类型进入属性,并且能够在回读时轻松辨别它们是什么类型。

有人问过这个问题,但没有给出明确的答案,而且无论如何它可能已经改变

4

1 回答 1

2

从 Swift 4.2 开始,你可以这样做:

extension Dictionary : FirebaseValue where Key == String, Value == FirebaseValue {
}
于 2019-04-15T15:49:27.907 回答