繁体   English   中英

如何使数据在 SwiftUI 中持久化?

[英]How do I make the data persistent in SwiftUI?

所以,这是我的观点 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 的初学者,不知道它是如何工作的

每次打开 CardView 时都会创建一个新的:

@ObservedObject var allStatsVM = AllStatsViewModel()

您可能想要的是在主视图中创建它,并将 ObservedObject 从主视图传递到 CarView,您在其中声明:

@ObservedObject var allStatsVM: AllStatsViewModel

然后数据将持续存在,当 CardView 再次出现时,它将显示它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM