使用 Firebase 的 Swiftui 中未显示数据

Posted

技术标签:

【中文标题】使用 Firebase 的 Swiftui 中未显示数据【英文标题】:Data not showing in Swiftui using Firebase 【发布时间】:2020-01-30 23:08:15 【问题描述】:

谁能告诉我我做错了什么?我正在使用 Swiftui 和 firebase 数据库。我没有在屏幕上看到任何错误或任何数据。我确实安装了 Pod 并在控制台中检查了安全规则。我尝试了其他几种方法,但这与 youtube 教程中的完全相同,除了集合名称和字段。

import SwiftUI
import Firebase



struct Calories: View 

    @ObservedObject var data = getData()

    var body: some View 

   NavigationView

    ZStack(alignment: .top)

                        GeometryReader_ in

                            // Home View....
                            Text("Home")

                        .background(Color("Color").edgesIgnoringSafeArea(.all))

                        CustomSearchBar(data: self.$data.datas).padding(.top)

                    .navigationBarTitle("")
                    .navigationBarHidden(true)
                
            
        
struct Calories_Previews: PreviewProvider 
    static var previews: some View 
        Calories()
    


struct CustomSearchBar : View 

    @State var txt = ""
    @Binding var data : [dataType]

    var body : some View

        VStack(spacing: 0)

            HStack

                TextField("Search", text: self.$txt)

                if self.txt != ""

                    Button(action: 

                        self.txt = ""

                    ) 

                        Text("Cancel")
                    
                    .foregroundColor(.black)

                

            .padding()

            if self.txt != ""

                if  self.data.filter($0.item.lowercased().contains(self.txt.lowercased())).count == 0

                    Text("No Results Found").foregroundColor(Color.black.opacity(0.5)).padding()
                
                else

                List(self.data.filter$0.item.lowercased().contains(self.txt.lowercased()))i in

                NavigationLink(destination: Detail(data: i)) 

                        Text(i.item)
                    


                    .frame(height: UIScreen.main.bounds.height / 5)
                

            


        .background(Color.white)
        .padding()
    



class getData : ObservableObject

    @Published var datas = [dataType]()

    init() 

        let db = Firestore.firestore()

        db.collection("HSCal").getDocuments  (snap, err) in

            if err != nil

                print((err?.localizedDescription)!)
                return
            

            for i in snap!.documents

                let id = i.documentID
                let item = i.get("item") as! String
                let cal = i.get("cal") as! String

                self.datas.append(dataType(id: id, item: item, cal: cal))
            
        
    


struct dataType : Identifiable 

    var id : String
    var item : String
    var cal : String


struct Detail : View 

    var data : dataType

    var body : some View

        Text(data.item)
    

【问题讨论】:

【参考方案1】:

您是否放置了应用程序包?

试一试

struct Calories: View 
    @EnvironmentObject var List: getData()
    ....

打电话

Calories().environmentObject(DataList) 

在某处声明

var DataList = getData()

【讨论】:

以上是关于使用 Firebase 的 Swiftui 中未显示数据的主要内容,如果未能解决你的问题,请参考以下文章

更改 TabView (SwiftUI) 中未选中图标的颜色

当 ObservedObject 更改时,在 SwiftUI 视图中未调用 onReceive

已发布/观察到的 var 在视图 swiftui 中未更新,带有调用函数

SwiftUI 工作表中未触发深层链接 onChange

未捕获的 ReferenceError:Flutter 中未定义 firebase

FirebaseError:firebase.initializeApp 中未提供“projectId”