How can I call the below function in a different swift (view) file so that print statement (the one not in the comments (*/)) displays?
I have tried passing the function into a variable within the new view but this has not worked.
Would it also be easier to remove "do" statement entirely?
func getJSON(){
guard let url = URL(string: "https://raw.githubusercontent.com/owid/covid-19-data/68c39808d445fe90b1fe3d57b93ad9be20f796d2/public/data/latest/owid-covid-latest.json") else{
return
}
let request = URLRequest(url: url)
URLSession.shared.dataTask(with: request){ (data, response, error) in
if let error = error{
print(error.localizedDescription)
return
}
guard let data = data else{
return
}
let decoder = JSONDecoder()
do {
//let decodedData = try decoder.decode([String:Country].self, from: data)
//print (decodedData)
let res = try decoder.decode([String:Country].self, from: data)
let locations = Array(res.values).map { $0.location}
let caseNumbers = Array(res.values).map{ $0.numberCheck}
let vaccineNumbers = Array(res.values).map{ $0.vaccineCheck}
/*Dual for loop
for (x, y) in zip(locations, caseNumbers) {
print("Country: ", x, " \t\t Yesterdays case numbers: ", y, ".")
}*/
***for item in 0..<locations.count{
print("Country: ", locations[item], "\nCase Numbers 24hrs: ", caseNumbers[item], "\nNumber of People Fully Vaccinated: ", vaccineNumbers[item],"\n\n")***
//Potential use in App when certain country is selected
//if locations[item] == "United Kingdom" {
//print(caseNumbers[item])}
}
}
catch {
print(error)
}
}.resume()
}
Observable-/ObservedObjectpattern