Schulung_iOS/DataView.swift
2025-10-24 15:04:47 +02:00

70 lines
1.8 KiB
Swift

//
// DataView.swift
// TheSwiftWeek
//
// Created by Ingo Rohlf on 24.10.25.
//
import SwiftUI
import Foundation
struct MenuCard: Codable {
let items: [MenuItem]
}
struct MenuItem: Codable {
let name: String
let description: String
let imageUrl: URL
// let price: Double
// enum CodingKeys: String, CodingKey {
// case name
// case detailText = "description"
// }
}
struct DataView: View {
let url2 = URL(string: "https://git.irohlf.de/api/swagger")!
private let url = URL(string: "http://127.0.0.1:8080/menu")!
private let jsonDecoder = JSONDecoder()
@State private var menu = MenuCard(items: [])
var body: some View {
Text(url.absoluteString)
.onAppear{
Task {
let (data, response) = try await
URLSession.shared.data(from: url)
guard let string = String(
data: data,
encoding: .utf8
) else { return }
if let response = response as? HTTPURLResponse, response.statusCode == 200 {
jsonDecoder.keyDecodingStrategy = .convertFromSnakeCase
menu = try! jsonDecoder.decode(MenuCard.self, from: data)
}
print("fertig geladen")
print(string)
}
}
ForEach(menu.items, id: \.name) { item in
HStack {
AsyncImage(url: item.imageUrl, scale: 12)
// Text(item.imageUrl.absoluteString )
Text(item.description )
}
}
}
}
#Preview {
DataView()
}