我正在使用存储数据的表视图,我将这些数据上传到firebase中,然后将它们保存在coredata中
我想在表格视图中删除一行,这里是代码:
let x = tableViewUsers![indexPath.row].permUser!
refDelete.child(emailReceived).child("Permission").child(x).removeValue()
self.tableViewUsers?.remove(at: indexPath.row)
self.TrackMeTable.deleteRows(at: [indexPath], with: .fade)
//self.TrackMeTable.reloadData()
DataController.deletePermUser(emailAddress: tableViewUsers![indexPath.row])
这些行代码的正确顺序是什么,因为当我在索引超出范围的第一行代码中第二次删除时出现错误
答案 0 :(得分:0)
删除项目并更改项目项目后,这就是为什么删除行时迟早会出现错误,因为索引将超出范围。我建议你删除行后,更新tableview。 self.TrackMeTable.reloadData()
。
答案 1 :(得分:0)
发生错误是因为
之后self.tableViewUsers?.remove(at: indexPath.row)
此特定索引路径上的项目不再存在,如果它是最后一项,则indexPath.row
的下一次调用会引发超出范围的异常。
除了问题之外,将tableViewUsers
声明为非可选项以消除所有感叹号和问号
要解决此问题,请在将用户从阵列中删除之前保留对用户的引用
let x = tableViewUsers[indexPath.row].permUser!
refDelete.child(emailReceived).child("Permission").child(x).removeValue()
let user = tableViewUsers[indexPath.row]
self.tableViewUsers.remove(at: indexPath.row)
self.TrackMeTable.deleteRows(at: [indexPath], with: .fade)
DataController.deletePermUser(emailAddress: user)