Я пытаюсь представить данные из файла JSON в SwiftUI. Но я не знаю, почему данные не могут отображаться в представлении содержимого.
Я попытался использовать responseDecodable
для извлечения данных и сохранения их в items
.
import Foundation
import SwiftUI
import Alamofire
struct Film: Decodable, Identifiable {
let id: Int
let title: String
let openingCrawl: String
let director: String
let producer: String
let releaseDate: String
let startships: [String]
enum CodingKeys: String, CodingKey {
case id = "episode_id"
case title
case openingCrawl = "opening_crawl"
case director
case producer
case releaseDate = "release_date"
case startships
}
}
struct Films: Decodable {
let count: Int
let all: [Film]
enum CodingKeys: String, CodingKey {
case count
case all = "results"
}
}
public class JsonData: ObservableObject {
@Published var items = [Film]()
init() {
fetchFilms()
}
func fetchFilms() {
let request = AF.request("https://swapi.dev/api/films")
request.responseDecodable(of: Films.self) { response in
guard let films = response.value else { return }
self.items = films.all
}
}
}
Затем показывает данные в List
.
import SwiftUI
import Combine
struct ContentView: View {
@ObservedObject var fetch = JsonData()
var body: some View {
NavigationView {
List(fetch.items) { data in
Text(data.title)
}
.navigationBarTitle("Film")
}
}
}
Однако ничего не отображается в списке.