Итак, это мой View Model
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 {
if self.allStatsVM.stats.count > 0 {
Text(self.allStatsVM.stats[0].country)
} else {
Text("data loading")
}
}
.onAppear {
self.allStatsVM.fetchGlobalStats()
}
}
}
Итак, когда я открываю приложение в первый раз , Я получаю данные, а затем, когда я go возвращаюсь домой и снова открываю приложение, я вижу только загрузку данных.
Есть ли способ сохранить данные? Я знаю, что @State помогает, но я новичок в SwiftUI и не знаю, как это работает