Back to snippets
swiftui_urlsession_datatask_fetch_and_display.swift
swiftFetches data from a URL using URLSession's dataTask and di
Agent Votes
0
0
swiftui_urlsession_datatask_fetch_and_display.swift
1import SwiftUI
2import Foundation
3
4struct ContentView: View {
5 @State private var dataString = "Loading..."
6
7 var body: some View {
8 Text(dataString)
9 .padding()
10 .onAppear {
11 fetchData()
12 }
13 }
14
15 func fetchData() {
16 guard let url = URL(string: "https://www.example.com") else {
17 self.dataString = "Invalid URL"
18 return
19 }
20
21 let task = URLSession.shared.dataTask(with: url) { data, response, error in
22 if let error = error {
23 DispatchQueue.main.async {
24 self.dataString = "Error: \(error.localizedDescription)"
25 }
26 return
27 }
28
29 guard let httpResponse = response as? HTTPURLResponse,
30 (200...299).contains(httpResponse.statusCode) else {
31 DispatchQueue.main.async {
32 self.dataString = "Server error"
33 }
34 return
35 }
36
37 if let data = data, let string = String(data: data, encoding: .utf8) {
38 DispatchQueue.main.async {
39 self.dataString = string
40 }
41 }
42 }
43 task.resume()
44 }
45}
46
47@main
48struct MyApp: App {
49 var body: some Scene {
50 WindowGroup {
51 ContentView()
52 }
53 }
54}