SWIFT-如果indexpathh为0,如何删除集合视图单元格?



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

@IBAction func deleteItem(_ sender: Any) {

if let selectedCells = tablesCollectionView.indexPathsForSelectedItems{
let items = selectedCells.map {$0.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
}

}

我有这个消息"线程1:致命错误:索引超出范围"当我试图删除单元格与0 indexPath。

这一行

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($0.id) }

相关内容

  • 没有找到相关文章

最新更新