Hi,
API call request runs fine as print command within API call shows correct data has been downloaded.
Data in API has been made Observable and @Published, and Observed in UI, but receive two errors attempting to show data in UI: “Cannot convert value of type ‘DataModel?’ to expected argument type ‘Range’” and “Initializer ‘init(_:)’ requires that ‘Binding’ conform to ‘StringProtocol’”.
Here is code within UI:
@ObservedObject var apiCall = APICall()
var body: some View {
// Text("Hello World")
List(apiCall.dataPull) {
data in
Text($apiCall.byCountry[28].cntry)
}
}
And here is API Call:
class APICall : ObservableObject, Identifiable {
@Published var dataPull: DataModel? = nil
init() {
let urlCall = URL(string: "https://api.covid19api.com/summary")
guard urlCall != nil else {
print("Error reaching API")
return
}
let session = URLSession.shared
let dataTask = session.dataTask(with: urlCall!) { (data, response, error) in
if error == nil && data != nil {
let decoder = JSONDecoder()
do {
let dataPull = try decoder.decode(DataModel.self, from: data!)
print(dataPull.byCountry[37].cntry)
}
catch {
print("Server busy, try again in 5 min.")
}
DispatchQueue.main.async {
self.dataPull = self.dataPull
}
}
}
dataTask.resume()
}
}
Any suggestions?