在领域中删除项目时收到错误“对象已被删除或无效”

冰湖

我从领域加载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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

错误:对象已被删除或无效。(领域)

领域因RLMException崩溃:对象已被删除或无效

错误:尝试删除已被删除的对象

createNavigationContainer()已被删除错误

从列表视图和领域中删除项目

如何正确修改或删除领域中的对象?

如何检查数组中的项目是否已被删除并删除?

错误或Azure DevOps错误:TF402484人事团队项目已被删除

在领域中删除列

运行时错误:QLabel 类型的包装 C/C++ 对象已被删除

编织为pdf时出现错误消息“乳胶引擎已被删除”

包装的QWidget类型的c / c ++对象已被删除

编译的服务类已被删除Composer错误laravel 5.4

PHP致命错误:调用时传递引用已被删除

错误:`createNavigationContainer()`已被删除。使用`createAppContainer()`代替

如何在 Swift 中删除领域中的对象

如何轻松删除领域中的所有对象

实例对象在尝试打印时被删除

“过时的文件句柄”错误,当进程尝试读取文件时,该其他进程已被删除

尝试通过API在销售订单行中添加服务产品时出现“记录不存在或已被删除”错误

在Vue组件中使用Rangy还原文本范围时出现错误消息“标记元素已被删除”

通知每个对B对象有引用的A对象B对象已被删除

Internet Explorer 支持已被删除

Kivy-NotImplementedError:tostring()已被删除

Azure blob 资源可能已被删除

CDATA在发送之前已被删除

如何检测文件已被删除

闪烁代码(转义代码)已被删除?

永久违反:ListView已被删除。但