ваша модель должна быть похожа на
import Foundation
// MARK: - Items
struct Items: Codable {
let items: [ItemsItem]?
}
// MARK: - ItemsItem
struct ItemsItem: Codable {
let actionType, version: Int?
let pickList: [PickList]?
}
// MARK: - PickList
struct PickList: Codable {
let title: String?
let items: [PickListItem]?
}
// MARK: - PickListItem
struct PickListItem: Codable {
let textField, itemValue: String?
}
ваша переменная должна быть такой
var appData : Items?
во время декодирования просто добавьте этот
appData = try decoder.decode(Items.self, from: pickResult)
ваш делегат представления таблицы и источник данных должен быть как
func numberOfSections(in tableView: UITableView) -> Int {
return appData?.items?.first?.pickList?.count ?? 1
}
func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> String? {
let cell = UITableViewCell()
return appData?.items?.first?.pickList?.first?.title
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return appData?.items?.first?.pickList?[section].items?.count ?? 1
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = UITableViewCell()
cell.textLabel?.text = appData?.items?.first?.pickList?.first?.items?[indexPath.row].textField
return cell
}