Swift无法推断复杂的闭包返回类型

时间:2020-06-27 07:34:06

标签: ios swift

我收到了标题中似乎出现的错误,该错误似乎在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数据库读取的项目的数组。

1 个答案:

答案 0 :(得分:0)

您不能在ForEach的View内部使用if和action。

您可以根据用例在ForEach内部的HStack的.onAppear视图修改器中使用它。