Criar estrutura codificável com tipo genérico
Primeiro de tudo, desculpe pelo título pouco claro da pergunta
Estou fazendo uma estrutura codificável que será usada como mensagem json.
enum MessageType: String, Codable{
case content
case request
case response
}
struct Message: Codable{
var type: MessageType
var content: /* NEED HELP HERE */
}
struct Content: Codable {...}
struct Request: Codable {...}
struct Response: Codable {...}
Ao declararMessage
, se étype
écontent
, Estácontent
O tipo deContent
.
let message = Message(
type: .content,
content: Content( ... )
}
Quandotype
érequest
, Estácontent
O tipo deRequest
.
let message = Message(
type: .request,
content: Request( ... )
}
Então, como devo definircontent
tipo de propriedade?
Eu tentei fazê-lo comoString
assim:
struct Message: Codable{
var type: MessageType
var content: String
}
struct Content: Codable{
var jsonString: String{
return String(data: try! JSONEncoder().encode(self), encoding: .utf8)
}
}
let foo = Message(
var type: .content,
var content: Content ( ... ).jsonString
)
e eu poderia usá-lo, mas estou ciente de usá-lo em diferentes plataformas como o Android, então quero ter uma maneira mais inteligente de lidar com isso.