我无法在 SwiftUI 中用 foreach 展示我的观点
I cant present my view with foreach in SwiftUI
我尝试尽可能频繁地呈现视图结构,因为数组中有项目。我想使用 for-each,因为我不喜欢 UIList 视图。顺便说一句,我正在使用 SwiftUI。我从 firebase-firestore 生成我想使用的数组。
以下是我生成数组的方式:
class ViewModellForItems: ObservableObject{
@Published var listItemsEnglisch = [MaterialItemClass]()
let myDataBase = Firestore.firestore()
let Ordner = Firestore.firestore().collection("Censored")
func updateData(){
Ordner.addSnapshotListener { (querySnapshot, error) in
guard let documents = querySnapshot?.documents else {
print("Ordner wurde nicht gefunden")
return
}
self.listItemsMathe = documents.map { (queryDocumentSnapshot) -> MaterialItemClass in
let data = queryDocumentSnapshot.data()
let Name = data["Name"] as? String ?? ""
let beschreibung = data["beschreibung"] as? String ?? ""
let anzahlDesProduktes = data["anzahlDesProduktes"] as? Int ?? 0
let bildName = data["bildName"] as? String ?? ""
let hintergrundFarbe = data["hintergrundFarbe"] as? String ?? ""
let item = MaterialItemClass(Name: Name, beschreibung: beschreibung, anzahlDesProduktes: anzahlDesProduktes, bildName: bildName, hintergrundFarbe: hintergrundFarbe)
return item
}
}
}
}
这是我在 ViewModellForItems 中使用的结构 Class:
struct MaterialItemClass {
var Name: String
var beschreibung: String
var anzahlDesProduktes: Int
var bildName: String
var hintergrundFarbe: String
}
这是我的 ContendView.swift 文件:
struct ContendView: View {
@ObservedObject private var viewModel = ViewModellForItems()
var body: some View {
ForEach(0 ..< viewModel.listItemsEnglisch.count, id: \.self) {
Text(viewModel.listItemsEnglisch[[=12=]].Name)
}.onAppear(){
self.viewModel.updateData()
}
Text("Debug")
}
}
我只收到调试文本...我做错了什么?并进一步;我如何为这个数组中的每个元素呈现一个完整的视图结构?
只想说,firebase 没有失败,因为如果我 运行 在列表视图中使用几乎相同的代码,一切正常...
好的孩子们我错了,
如果我只在我的每个块的 .onAppear 方法中更新我的数组,它不会更新,因为 for-each 块永远不会出现。
谢谢你的时间
布索什
我尝试尽可能频繁地呈现视图结构,因为数组中有项目。我想使用 for-each,因为我不喜欢 UIList 视图。顺便说一句,我正在使用 SwiftUI。我从 firebase-firestore 生成我想使用的数组。
以下是我生成数组的方式:
class ViewModellForItems: ObservableObject{
@Published var listItemsEnglisch = [MaterialItemClass]()
let myDataBase = Firestore.firestore()
let Ordner = Firestore.firestore().collection("Censored")
func updateData(){
Ordner.addSnapshotListener { (querySnapshot, error) in
guard let documents = querySnapshot?.documents else {
print("Ordner wurde nicht gefunden")
return
}
self.listItemsMathe = documents.map { (queryDocumentSnapshot) -> MaterialItemClass in
let data = queryDocumentSnapshot.data()
let Name = data["Name"] as? String ?? ""
let beschreibung = data["beschreibung"] as? String ?? ""
let anzahlDesProduktes = data["anzahlDesProduktes"] as? Int ?? 0
let bildName = data["bildName"] as? String ?? ""
let hintergrundFarbe = data["hintergrundFarbe"] as? String ?? ""
let item = MaterialItemClass(Name: Name, beschreibung: beschreibung, anzahlDesProduktes: anzahlDesProduktes, bildName: bildName, hintergrundFarbe: hintergrundFarbe)
return item
}
}
}
}
这是我在 ViewModellForItems 中使用的结构 Class:
struct MaterialItemClass {
var Name: String
var beschreibung: String
var anzahlDesProduktes: Int
var bildName: String
var hintergrundFarbe: String
}
这是我的 ContendView.swift 文件:
struct ContendView: View {
@ObservedObject private var viewModel = ViewModellForItems()
var body: some View {
ForEach(0 ..< viewModel.listItemsEnglisch.count, id: \.self) {
Text(viewModel.listItemsEnglisch[[=12=]].Name)
}.onAppear(){
self.viewModel.updateData()
}
Text("Debug")
}
}
我只收到调试文本...我做错了什么?并进一步;我如何为这个数组中的每个元素呈现一个完整的视图结构?
只想说,firebase 没有失败,因为如果我 运行 在列表视图中使用几乎相同的代码,一切正常...
好的孩子们我错了, 如果我只在我的每个块的 .onAppear 方法中更新我的数组,它不会更新,因为 for-each 块永远不会出现。 谢谢你的时间 布索什