gpt4 book ai didi

ios - 删除 Realm 中的项目时出现错误 "Object has been deleted or invalidated"

转载 作者:行者123 更新时间:2023-11-28 07:49:09 25 4
gpt4 key购买 nike

我从 Realm 加载 TableView 数据

let tasks = realmManager.objects(ModelTask.self).filter("planId == %@", currentPlan.id)
datasource = Array(tasks)
tableViewMain.reloadData()

并在用户点击 TableView 中的删除时删除一个项目

   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]
}

当 realm 删除这个项目时它崩溃了。

我收到错误消息原因:“对象已被删除或无效。”

我很困惑这在其他 View Controller 上工作正常。

为什么不在这里工作?

编辑------------

解决了这个问题。

因为我删除这个项目后,我有一个使用这个项目的日志功能。这就是它总是崩溃的原因。

谢谢大家

最佳答案

试试这个

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

关于ios - 删除 Realm 中的项目时出现错误 "Object has been deleted or invalidated",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50131511/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com