我收到了标题中似乎出现的错误,该错误似乎在HStack中。
我的代码:
import SwiftUI
import SDWebImageSwiftUI
import FirebaseFirestore
struct CartView : View {
@ObservedObject var cartdata = getCartData()
@State private var showRow = true
var body : some View{
VStack(alignment: .leading){
Text(self.cartdata.datas.count != 0 ? "Items In The Cart" : "No Items In Cart").padding([.top,.leading])
if self.cartdata.datas.count != 0{
List{
ForEach(self.cartdata.datas){i in
if i.quantity == 0 {
let db = Firestore.firestore()
db.collection("cart").document(self.cartdata.datas[i.last!].id).delete { (err) in
if err != nil{
print((err?.localizedDescription)!)
return
}
self.cartdata.datas.remove(atOffsets: i)
}
}
HStack(spacing: 15){
CartRow(item: i)
.onTapGesture {
UIApplication.shared.windows.last?.rootViewController?.present(textFieldAlertView(id: i.id), animated: true, completion: nil)
}
}
}
.onDelete { (index) in
let db = Firestore.firestore()
db.collection("cart").document(self.cartdata.datas[index.last!].id).delete { (err) in
if err != nil{
print((err?.localizedDescription)!)
return
}
self.cartdata.datas.remove(atOffsets: index)
}
}
}
}
我想做的是,如果该项目的数量等于0,它将被从数据库中删除并从我的视图中删除。
该数据库是Firestore数据库。 self.carddata.datas是从Firestore数据库读取的项目的数组。
答案 0 :(得分:0)
您不能在ForEach的View内部使用if和action。
您可以根据用例在ForEach内部的HStack的.onAppear
视图修改器中使用它。