Как хранить данные в массиве из веб-API

Я использую Xcode 11.3.1, Swift 5 и пытаюсь отобразить данные в виде таблицы через веб-API. Итак, после получения данных я хочу сохранить данные «имя» в списке стран. CountryList — это массив.

URLSession.shared.dataTask(with: url!) { (данные, ответ, ошибка) в

        do
        {if error == nil{

            let parsedData = try JSONSerialization.jsonObject(with: data!) as? NSDictionary
            let tableData = parsedData?["data"] as! NSArray

            self.countryList = [tableData.value(forKey: "name") as? String]
            print("DEVELOPER: \(self.countryList)")

            DispatchQueue.main.async {
                self.countryTable.reloadData()
            }
            }
        }
        catch{
            print(error.localizedDescription)
        }

    }.resume()

//Веб-API

{ "status": 200, "data": [ { "name": "Афганистан", "id": 1}, { "name": "Албания", "id": 2}, { "name": " Алжир", "id": 3 }, { "name": "Американское Самоа", "id": 4 } ], "message": "Список всех стран." }


person saumya ranjan Gangwar    schedule 14.03.2020    source источник


Ответы (1)


Пытаться

guard let data = data else { return }
let parsedData = try JSONSerialization.jsonObject(with: data) as! [String:Any]
let tableData = parsedData["data"] as! [[String:Any]] 
self.countryList = tableData.compactMap {  $0["name"] as? String }

Рекомендовано

do { 
   let res = try JSONDecoer().decode(Root.self,from:data)
    print(res.data)
 }
catch {
   print(error)
 }

struct Root : Codable {
   let status:Int
   let data:[Model]
}

struct Model:Codable {
  let name:String
  let id:Int
}
person Sh_Khan    schedule 14.03.2020