使用 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 中未更新,带有调用函数