如何在 swiftui 中实现 struct View 上的 var 类 ObservableObject

Posted

技术标签:

【中文标题】如何在 swiftui 中实现 struct View 上的 var 类 ObservableObject【英文标题】:How to implement var on struct View to class ObservableObject in swiftui 【发布时间】:2020-04-06 07:17:51 【问题描述】:

我无法将 struct View 上的 var 实现为 swiftui 中的 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

【问题讨论】:

【参考方案1】:

您可以在 init 方法中启动您的 ObservedObject 对象 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)
    

【讨论】:

以上是关于如何在 swiftui 中实现 struct View 上的 var 类 ObservableObject的主要内容,如果未能解决你的问题,请参考以下文章

如何在 SwiftUI 中实现 MVVM 模式?视图不会重新渲染

SwiftUI:如何在 macOS 应用程序中实现编辑菜单

如何在 SwiftUI 中的 WatchOS 中实现 handleUserActivity?

如何在 SwiftUI 中实现触发 switch case 的左或右 DragGesture()?

如何在不中断删除的情况下在 SwiftUI 中实现 TextField 列表

在 SwiftUI 中实现昂贵的派生属性的最佳方法是啥?