Использование responseDecodable для представления данных в SwiftUI - PullRequest
0 голосов
/ 25 мая 2020

Я пытаюсь представить данные из файла 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")
            }
        }
    }

Однако ничего не отображается в списке.

...