我从领域加载tableview数据
let tasks = realmManager.objects(ModelTask.self).filter("planId == %@", currentPlan.id)
datasource = Array(tasks)
tableViewMain.reloadData()
用户单击表视图中的删除时删除和删除项目
func tableView(_ tableView: UITableView, editActionsForRowAt indexPath: IndexPath) -> [UITableViewRowAction]? {
let delete = UITableViewRowAction(style: .normal, title: "删除".localized) {
[weak self] action, index in
guard let `self` = self else {return}
let task = self.datasource[indexPath.row]
let realm = try! Realm()
try? realm.write {
realm.delete(task)
}
self.datasource.remove(at: indexPath.row)
tableView.reloadData()
}
delete.backgroundColor = UIColor(hex:"fe5d5c")
return [delete]
}
并且在领域删除此项目时崩溃。
我收到错误消息原因:“对象已被删除或无效。”
我很困惑,这在其他视图控制器上工作正常。
为什么不在这里工作?
编辑----------
解决了这个问题。
因为删除此项目后,我拥有使用此项目的日志功能。这就是为什么它总是崩溃。
谢谢大家
试试这个
func tableView(_ tableView: UITableView, editActionsForRowAt indexPath: IndexPath) -> [UITableViewRowAction]? {
let delete = UITableViewRowAction(style: .normal, title: "删除".localized) {
[weak self] action, index in
guard let `self` = self else {return}
let task = self.datasource[indexPath.row]
let realm = try! Realm()
try? realm.write {
realm.delete(task)
self.datasource = realmManager.objects(ModelTask.self).filter("planId == %@", currentPlan.id)
}
tableView.reloadData()
}
delete.backgroundColor = UIColor(hex:"fe5d5c")
return [delete]
}
或者,您可以在将isInvalidated从数据源中删除之前进行检查
if !task.isInvalidated{
self. datasource.removeObject(task)
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句