swiftui列表没有出现但数组不为空

Posted

技术标签:

【中文标题】swiftui列表没有出现但数组不为空【英文标题】:swiftui list doens't appear but array isn't empty 【发布时间】:2021-03-22 20:26:33 【问题描述】:

我正在处理一个从 Firebase 加载数据的 Swiftui 文件。 它确实有效,但是当我添加东西时它突然停止工作...... 我试图将它剥离,但我无法让它再次工作。 有谁知道我做错了什么?

import SwiftUI
import Firebase

struct Fav: View 
@StateObject var loader = Loader()

var body: some View 
    ScrollView 
        if loader.userfav.count != 0 
            List (loader.userfav, id: \.id)  fav in
                Text(fav.name.capitalized)
            
        
        else
        
            Text("You haven't added favorits yet...")
        
    
    .onAppear
        loader.loadfav(loadfavorits: "asd")
    
    .navigationBarTitle("")
    .navigationBarHidden(true)
    .navigationBarBackButtonHidden(true)

func deletefav (docid: String) 
    print(docid)


struct Fav_Previews: PreviewProvider 
    static var previews: some View 
        Fav()
    
 

和加载器文件

import Foundation
import Firebase
import FirebaseFirestore


class Loader : ObservableObject 
     private var db = Firestore.firestore()
     @Published var userfav = [fav]()

        func loadfav (loadfavorits: String) 
    userfav = [fav]()
    
    db.collection("favo").whereField("user", isEqualTo: loadfavorits).getDocuments()  (querySnapshot, err) in
        if let err = err 
            print("Error getting favorits: \(err.localizedDescription)")
        
        else
        
            for fav in querySnapshot!.documents 
                let brand = fav.get("brand") as! String
                let store = fav.get("store") as! String
                let name = fav.get("name") as! String
                let type = fav.get("type") as! String
                let docid = fav.get("docid") as! String
            
                self.userfav.append(fav(brand: brand, store: store, name: name, type: type, docid: docid))
            
        
    


它不显示文本(“你还没有添加收藏夹......”) 所以这意味着 dat loader.userfav.count 不为空

【问题讨论】:

可能是冗余 ScollView 的结果。列表已经滚动——不应该在另一个滚动视图中。 解决了问题!!谢谢! 【参考方案1】:

List 嵌入ScrollView(也可以滚动)可能会导致布局问题。去掉外面的ScrollView,问题就解决了。

【讨论】:

以上是关于swiftui列表没有出现但数组不为空的主要内容,如果未能解决你的问题,请参考以下文章

异步后如何使全局数组不为空

查找数组字段不为空的 MongoDB 记录

查找数组字段不为空的 MongoDB 记录

查找数组字段不为空的 MongoDB 记录

查找数组字段不为空的 MongoDB 记录

查找数组字段不为空的 MongoDB 记录