In this tutorial a list of todo items will be fetched and displayed in a List. url https://jsonplaceholder.typicode.com/todos
JSON
[
{
"userId": 1,
"id": 1,
"title": "delectus aut autem",
"completed": false
},
{
"userId": 1,
"id": 2,
"title": "quis ut nam facilis et officia qui",
"completed": false
},
{
"userId": 1,
"id": 3,
"title": "fugiat veniam minus",
"completed": false
},
etc.
// // ContentView.swift // swiftuidev // // Created by Cairocoders // import SwiftUI struct ContentView: View { @ObservedObject var fetch = FetchToDo() var body: some View { VStack { List(fetch.todos) { todo in VStack(alignment: .leading) { Text(todo.title) Text("\(todo.completed.description)") // print boolean .font(.system(size: 11)) .foregroundColor(Color.gray) } } } } } class FetchToDo: ObservableObject { @Published var todos = [Todo]() init() { let url = URL(string: "https://jsonplaceholder.typicode.com/todos")! URLSession.shared.dataTask(with: url) {(data, response, error) in do { if let todoData = data { let decodedData = try JSONDecoder().decode([Todo].self, from: todoData) DispatchQueue.main.async { self.todos = decodedData } } else { print("No data") } } catch { print("Error") } }.resume() } } struct Todo: Codable, Identifiable { public var id: Int public var title: String public var completed: Bool } struct ContentView_Previews: PreviewProvider { static var previews: some View { ContentView() } }