首页 > 解决方案 > 如何在 swiftui 中实现 struct View 上的 var 类 ObservableObject

问题描述

我无法在 swiftui 中实现 struct View 上的 var 类 ObservableObject

struct History: View {

var busId : String

@ObservedObject var historyData = getHistory()

var body: some View {
    ZStack{
        ScrollView(.vertical, showsIndicators: false){
            VStack(alignment: .leading){

                ForEach(historyDataSatu.data){i in
                      Text("Something")
                }

            }

        }
    }
}

class getHistory: ObservableObject {

    @Published var data = [history]()

    init() {

        let db = Firestore.firestore().collection("Bus").document(busId)
        // An error occurs when I implement busId into document(busId). Please help me.

    }


   }
}

struct history: Identifiable {
    var id : String
    var day : String
}

标签: google-cloud-firestoreswiftui

解决方案


您可以ObservedObject在 init 方法中启动您的对象 historyData。希望对你有帮助

struct History: View {

    var busId : String
    @ObservedObject var historyData = getHistory(busId: "")

    init() {
       self.historyData = getHistory(busId: busId)
    }

    var body: some View {
        ZStack{
            ScrollView(.vertical, showsIndicators: false){
                VStack(alignment: .leading){
                    ForEach(historyData.data) { i in
                       Text("Something")
                    }
                }
            }
        }
    }
}

class getHistory: ObservableObject {

    @Published var data = [history]()
    init(busId: String) {
        let db = Firestore.firestore().collection("Bus").document(busId)
    }
}

推荐阅读