SWIFT- 如果indexPatih 为0,如何删除Collection View Cell?

SWIFT- How to delete Collection View Cell if indexPatih is 0?

我是 swift 的新人,我需要有关删除集合视图单元格的帮助。在此代码中,如果 indexPath 为 0,则删除该单元格时出错。

 @IBAction func deleteItem(_ sender: Any) {
    
    if let selectedCells = tablesCollectionView.indexPathsForSelectedItems{
        let items = selectedCells.map {[=11=].item}.sorted().reversed()
        

        for item in items {
            tables.remove(at: item)
            let tableNo: TableModel
            tableNo = tables[item-1]  //Thread 1: Fatal error: Index out of range
            
            refTables = Database.database().reference().child("userInfo").child(uid!).child("tables")
            refTables.child(tableNo.id!).removeValue { error,arg  in
               if error != nil {
                   print("error \(error)")
               }
             }
            
        }
      
        tablesCollectionView.deleteItems(at: selectedCells)
        deleteButton.isEnabled = false
    }
    
}

当我尝试删除 indexPath 为 0 的单元格时,收到消息“线程 1:致命错误:索引超出范围”。

这一行

tables.remove(at: item)

for 循环中很危险,因为当您从数组中删除时,它的大小会发生变化,这会使旧索引出错

你需要

var toDeleteIds = [String]()
for item in items {
  let tableNo = tables[item]  
  toDeleteIds.append(tableNo.id!)
  refTables =  Database.database().reference().child("userInfo").child(uid!).child("tables")
  refTables.child(tableNo.id!).removeValue { error,arg  in
    if error != nil {
      print("error \(error)")
    }
  } 
} 
tables.removeAll { toDeleteIds.contains([=11=].id) }