【发布时间】:2021-03-25 08:22:09
【问题描述】:
我很困惑将一个集合链接到另一个集合,任何反馈都将不胜感激。 我必须将它们编码为结构的集合:
struct KetoTarif: Hashable, Codable, Identifiable {
var id: Int
var name: String
}
struct Keto: Hashable, Codable, Identifiable {
var id: Int
var breakfast: String //this should match with name in KetoTarif
}
我为 Keto 获取数据如下:
class KetoViewModel: ObservableObject, Identifiable {
@Published var ketoDays = [Keto]()
func fetchData() {
db.collection("keto").addSnapshotListener { (querySnapshot, error) in
guard let documents = querySnapshot?.documents else {
print("No documents")
return
}
self.ketoDays = documents.compactMap { document in
do {
let x = try document.data(as: Keto.self)
return x
} catch {
print(error)
}
return nil
}
}
}
}
同样,我为我的第二个系列做同样的事情
class KetoTarifViewModel: ObservableObject, Identifiable {
@Published var ketoTarifler = [KetoTarif]()
func fetchData() {
db.collection("ketotarifler").addSnapshotListener { (querySnapshot, error) in
guard let documents = querySnapshot?.documents else {
print("No documents")
return
}
self.ketoTarifler = documents.compactMap { document in
do {
let x = try document.data(as: KetoTarif.self)
return x
} catch {
print(error)
}
return nil
}
}
}
}
最后我的观点我添加了我的主要目标作为评论:
struct KetoDiyet: View {
@ObservedObject var ketoModel = KetoViewModel()
@ObservedObject var ketoTarifModel = KetoTarifViewModel()
var body: some View {
ScrollView {
Text("c")
ForEach(ketoModel.ketoDays) { keto in
//here keto.breakfast returns a string
// and I want to search/find/print that string in ketoTarifModel
}
}.onAppear() {
self.ketoModel.fetchData()
self.ketoTarifModel.fetchData()
}
}
}
主要思想是 Keto 有一个字符串(早餐),它应该与 KetoTarif 中的名称匹配。 我刚从关系数据库切换,并在考虑这个问题时遇到了问题。
谢谢!
【问题讨论】:
标签: swift firebase google-cloud-firestore swiftui