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) }
我是 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) }