Como posso implementar a decodificação polimórfica de dados JSON no Swift 4?
Estou tentando renderizar uma exibição dos dados retornados de um ponto de extremidade da API. Meu JSON é mais ou menos assim:
{
"sections": [
{
"title": "Featured",
"section_layout_type": "featured_panels",
"section_items": [
{
"item_type": "foo",
"id": 3,
"title": "Bisbee1",
"audio_url": "http://example.com/foo1.mp3",
"feature_image_url" : "http://example.com/feature1.jpg"
},
{
"item_type": "bar",
"id": 4,
"title": "Mortar8",
"video_url": "http://example.com/video.mp4",
"director" : "John Smith",
"feature_image_url" : "http://example.com/feature2.jpg"
}
]
}
]
}
Eu tenho um objeto que representa como layout uma exibição na minha interface do usuário. Se parece com isso:
public struct ViewLayoutSection : Codable {
var title: String = ""
var sectionLayoutType: String
var sectionItems: [ViewLayoutSectionItemable] = []
}
ViewLayoutSectionItemable
é um protocolo que inclui, entre outras coisas, um título e um URL para uma imagem a ser usada no layout.
No entanto, osectionItems
matriz é composta de diferentes tipos. O que eu gostaria de fazer é instanciar cada item da seção como uma instância de sua própria classe.
Como faço para configurar oinit(from decoder: Decoder)
método para oViewLayoutSection
deixe-me repetir os itens nessa matriz JSON e criar uma instância da classe apropriada em cada caso?