Спасибо за ваш ответ. Я начинаю понимать это. Ваш ответ мне очень помог, и я чувствую, что это должен быть принятый ответ.
аюсь отобразить представление из данных, возвращаемых из конечной точки API. Мой JSON выглядит (примерно) так:
{
"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"
}
]
}
]
}
У меня есть объект, который представляет, как макет представления в моем пользовательском интерфейсе. Это выглядит так:
public struct ViewLayoutSection : Codable {
var title: String = ""
var sectionLayoutType: String
var sectionItems: [ViewLayoutSectionItemable] = []
}
ViewLayoutSectionItemable
это протокол, который включает в себя, помимо прочего, заголовок и URL-адрес изображения для использования в макете.
ОднакоsectionItems
массив на самом деле состоит из разных типов. То, что я хотел бы сделать, это создать экземпляр каждого элемента раздела как экземпляр своего собственного класса.
Как мне настроитьinit(from decoder: Decoder)
метод дляViewLayoutSection
позволить мне перебрать элементы в этом массиве JSON и создать экземпляр соответствующего класса в каждом случае?