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 concretoPara 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?