我无法在 SwiftUI 中使用 foreach 呈现我的视图

Posted

技术标签:

【中文标题】我无法在 SwiftUI 中使用 foreach 呈现我的视图【英文标题】:I cant present my view with foreach in SwiftUI 【发布时间】:2021-03-07 20:15:40 【问题描述】:

我尝试像数组中的项目一样频繁地呈现视图结构。我想使用 for-each,因为我不喜欢 UIList 视图。顺便说一句,我正在使用 SwiftUI。我从 firebase-firestore 生成我想使用的数组。

这是我生成数组的方式:

class ViewModellForItems: ObservableObject
    @Published var listItemsEnglisch = [MaterialItemClass]()
    
    let myDataBase = Firestore.firestore()

    let Ordner = Firestore.firestore().collection("Censored")
    
    func updateData()
        Ordner.addSnapshotListener  (querySnapshot, error) in
            guard let documents = querySnapshot?.documents else 
                print("Ordner wurde nicht gefunden")
                return
            
            self.listItemsMathe = documents.map  (queryDocumentSnapshot) -> MaterialItemClass in
                
                let data = queryDocumentSnapshot.data()
                
                let Name = data["Name"] as? String ?? ""
                let beschreibung = data["beschreibung"] as? String ?? ""
                let anzahlDesProduktes = data["anzahlDesProduktes"] as? Int ?? 0
                let bildName = data["bildName"] as? String ?? ""
                let hintergrundFarbe = data["hintergrundFarbe"] as? String ?? ""
                
                let item = MaterialItemClass(Name: Name, beschreibung: beschreibung, anzahlDesProduktes: anzahlDesProduktes, bildName: bildName, hintergrundFarbe: hintergrundFarbe)
                return item
                
            
            
        
    

这是我在 ViewModellForItems 类中使用的结构:

   struct MaterialItemClass 
        var Name: String
        var beschreibung: String
        var anzahlDesProduktes: Int
        var bildName: String
        var hintergrundFarbe: String
    

这是我的 ContendView.swift 文件:

struct ContendView: View 
    
    
    @ObservedObject private var viewModel = ViewModellForItems()
    
    var body: some View 
        
        ForEach(0 ..< viewModel.listItemsEnglisch.count, id: \.self) 
            
            Text(viewModel.listItemsEnglisch[$0].Name)
          
                .onAppear()
                    self.viewModel.updateData()
                        
                Text("Debug")
                
    

我只看到调试文本...我做错了什么?并进一步;如何为这个数组中的每个元素呈现一个完整的 View-Struct?

只想说,firebase 没有失败,因为如果我在列表视图中运行几乎相同的代码,一切正常......

【问题讨论】:

如果您对这个问题有任何想法,请写信,我非常有压力解决这个问题 【参考方案1】:

好吧,伙计们,我弄错了, 如果我只在我的 for each 块的 .onAppear 方法中更新我的数组,它不会更新,因为 for-each 块永远不会出现。 谢谢你的时间 布托什

【讨论】:

以上是关于我无法在 SwiftUI 中使用 foreach 呈现我的视图的主要内容,如果未能解决你的问题,请参考以下文章

SwiftUI ForEach.onDelete 在 TabView 中无法正常工作

无法在 SwiftUI 中使用 ForEach 和 CoreData 将数据正确传递给模态演示

从 ForEach 中引用变量时,SwiftUI“无法推断通用参数'数据'”

SwiftUI 将几何阅读器与 ForEach 结合使用

SwiftUI:Firebase ForEach 列表执行编辑功能无法编辑选定的行项目

如何在 SwiftUI 的 ForEach 循环中增加状态?