【问题标题】:Data not showing in Swiftui using Firebase使用 Firebase 的 Swiftui 中未显示数据
【发布时间】: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)
    }
}

【问题讨论】:

    标签: firebase google-cloud-firestore swiftui


    【解决方案1】:

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

    试一试

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

    打电话

    Calories().environmentObject(DataList) 
    

    在某处声明

    var DataList = getData()
    

    【讨论】:

      猜你喜欢
      • 2021-01-05
      • 1970-01-01
      • 2021-06-16
      • 2020-10-12
      • 1970-01-01
      • 1970-01-01
      • 2018-07-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多