Я пытаюсь вернуть значения строки словаря. Возвращается как:
категории: [yelp1.Zom2 (категории: yelp1.Zom3 (имя: «Доставка»)), yelp1.Zom2 (категории: yelp1.Zom3 (имя: «Dine-out»))) ....]
Как бы я мог вернуть только такие значения имени, как "Доставка" и "Выход из игры"?
// yelp1 это просто имя файла
ОБРАЗЕЦ ДАННЫХ JSON
{
"categories": [
{
"categories": {
"id": 1,
"name": "Delivery"
}
},
{
"categories": {
"id": 2,
"name": "Dine-out"
}
},
ЭТО МОИ СТРУКТЫ
struct Zom3:Codable{
let name:String
}
struct Zom2:Codable{
//let category_id:Int?
let categories: Zom3
}
struct Zom:Codable{
//let category_id:Int?
let categories: [Zom2]
}
Я пытался декодировать Zom3, потому что там находится значение имени, но в нем указано, что ключ не найден. Это не позволит мне перебрать цикл for, чтобы хотя бы получить каждый элемент словаря отдельно.
override func viewDidLoad() {
super.viewDidLoad()
let urlName = "https://developers.zomato.com/api/v2.1/categories"
let url = URL(string: urlName)
var urlReq = URLRequest(url: url!)
urlReq.httpMethod = "GET"
urlReq.addValue("application/json", forHTTPHeaderField: "Accept")
urlReq.addValue(zomatoKey, forHTTPHeaderField: "user_key")
let task = URLSession.shared.dataTask(with: urlReq) { (data, response, error) in
guard let data = data else {return}
do {
let items = try JSONDecoder().decode( Zom.self, from: data)
print(items)
}
catch {
print(error)
}
}
task.resume()
}