I have data models. I make a request and get JSON. But I want to use the completion handler to add data to the table. How do I save data and display it in a tableview? I didn't use the entire data model for the test.
This is my data model
This is my function for parsing and mapping
class Network {
let baseUrl = URL(string:"https://ppbet-327310.appspot.com/api/games")
func getCity(completion: @escaping([WelcomeElement]) -> ()) {
guard let url = baseUrl else {return}
AF.request(url, method: .get).responseJSON { (response) in
switch response.result {
case .success:
guard let data = response.data else {return}
let json = try! JSON(data: data)
let arrayCount = json.array?.count ?? 0
for i in 0..<arrayCount {
let name = json[i]["name"].string ?? "N/A"
if let betTypes = json[i]["betTypes"].array {
for i in 0..<betTypes.count {
guard let outcomesCounter = betTypes[i]["outcomesCounter"].int else {return}
guard let nameBet = betTypes[i]["name"].string else {return}
}
}
if let leagues = json[i]["leagues"].array {
for i in 0..<leagues.count {
guard let nameLeagues = leagues[i]["name"].string else {return}
if let events = leagues[i]["events"].array {
for i in 0..<events.count {
guard let team1 = events[i]["team1"].string else {return}
guard let team2 = events[i]["team2"].string else {return}
guard let score1 = events[i]["score1"].string else {return}
guard let score2 = events[i]["score2"].string else {return}
if let betTypes = events[i]["betTypes"].array {
for i in 0..<betTypes.count {
guard let nameBetTypes = betTypes[i]["name"].string else {return}
if let outcomesBetTypes = betTypes[i]["outcomes"].array {
for i in 0..<outcomesBetTypes.count {
guard let name = outcomesBetTypes[i]["name"].string else {return}
guard let coefficient = outcomesBetTypes[i]["coefficient"].string else {return}
}
}
}
}
}
}
}
}
}
DispatchQueue.main.async {
completion(/*????)*/)
}
case .failure(let error):
print(error)
}
}
}
}