Как мне получить доступ только к первому элементу данных в SwiftUI? - PullRequest
0 голосов
/ 15 апреля 2020

Итак, у меня есть следующая модель представления, где я получаю данные:

import Foundation
import SwiftUI
import Combine
import Alamofire


class AllStatsViewModel: ObservableObject {
    @Published var isLoading: Bool = true
    @Published var stats = [CountryStats]()

    func fetchGlobalStats() {
        let request = AF.request("https://projectcovid.deadpool.wtf/all")
       request.responseDecodable(of: AllCountryStats.self) { (response) in
         guard let globalStats = response.value else { return }
        DispatchQueue.main.async {
            self.stats = globalStats.data
        }

        self.isLoading = false
       }
    }
}

И это представление:

struct CardView: View {
    @ObservedObject var allStatsVM = AllStatsViewModel()

    var body: some View {
        VStack {
            Text(self.allStatsVM.stats[0].country)

        }


        .onAppear {
            self.allStatsVM.fetchGlobalStats()
        }
    }

}

Я хотел бы получить доступ только к первому элемент данных, но проблема, с которой я сталкиваюсь, заключается в том, что при загрузке представления данные не загружаются, поэтому я получаю индекс вне диапазона ошибок при

Text(self.allStatsVM.stats[0].country)

Есть ли способ, я могу получить доступ первый элемент?

1 Ответ

1 голос
/ 15 апреля 2020

попробуйте это:

struct CardView: View {
    @ObservedObject var allStatsVM = AllStatsViewModel()



      var body: some View {
            VStack {
                if self.allStatsVM.stats.count > 0 {
                    Text(self.allStatsVM.stats[0].country)
                } else {
                    Text ("data loading")
                }

        }


        .onAppear {
            self.allStatsVM.fetchGlobalStats()
        }
    }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...