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?

questionAnswers(2)

yourAnswerToTheQuestion