Расширение протокола ограниченного словаря

Я пытаюсь заставить определенный тип словаря соответствовать протоколу.

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 {

}

но я не могу понять правильный синтаксис, чтобы привести его в соответствие с протоколом, если это вообще возможно. Если это невозможно, есть ли другой способ добиться того же эффекта? Я пытаюсь разрешить в свойствах только определенные типы и легко различать, что это за типы при обратном чтении.

Этот вопрос был задан, но не получил окончательного ответа, и он мог измениться независимо

0 ответов

Начиная с Swift 4.2 вы можете сделать это с:

extension Dictionary : FirebaseValue where Key == String, Value == FirebaseValue {
}
Другие вопросы по тегам