Almacenar codificables en un diccionario rápido

Estoy buscando almacenar objetos de modelos en un Diccionario y me gustaría serializar todo el diccionario usandoJSONEncoder en datos y posteriormente en una cadena y guárdelo.

La idea es usar Swift 4 fuera de la cajaEncodable para asegurar que todo lo que agregue al diccionario se serializará, lo que puede incluir primitivas y objetos personalizados (que se ajustarán aEncodable)

El desafío es qué tipo debería declarar que es el diccionario:

Si yo uso[String: Any], no sabrá codificarAny, y si tengo que convertirlo en un tipo concreto real, de alguna manera frustra el propósito de los genéricosSi yo uso[String: Encodable], se bloqueará en tiempo de ejecución diciendo que Encodable no se ajusta a sí mismo, lo cual es comprensible ya que necesita un tipo concreto

Para abordar esto, pensé en crear un contenedor: es decir, un protocolo con un tipo asociadoo una estructura con valor de tipo genérico:

struct Serializable<T: Encodable> {
    var value: T?

    init(value: T) {
       self.value = value
    }
}

Pero el problema persiste, mientras declaro el tipo del diccionario antes mencionado, todavía tengo que suministrar el tipo concreto.

var dictionary: [String: Serializable<X>]

¿Cuál debería ser 'X' aquí, o cuál es la forma correcta de lograr esto? ¿Qué me estoy perdiendo?

Respuestas a la pregunta(2)

Su respuesta a la pregunta