Uitableview NSFetchedResultsController崩溃时删除TableView行?

Uitableview NSFetchedResultsController崩溃时删除TableView行?,uitableview,nsfetchedresultscontroller,Uitableview,Nsfetchedresultscontroller,我试图让用户从使用NSFetchedResultsController填充的UITableView中删除一行,但始终会收到一个致命错误: 由于未捕获异常而终止应用程序 'NSInternalInconsistencyException',原因:'无效更新:无效 第1节中的行数。表中包含的行数 更新(7)后的现有节数必须等于 更新(7)之前该节中包含的行,加号或减号 从该节插入或删除的行数(插入0, 1)并加上或减去移入或移出的行数 该部分(0移入,0移出)。' 我正在删除核心数据条目,然后在我的

我试图让用户从使用
NSFetchedResultsController
填充的
UITableView
中删除一行,但始终会收到一个致命错误:

由于未捕获异常而终止应用程序 'NSInternalInconsistencyException',原因:'无效更新:无效 第1节中的行数。表中包含的行数 更新(7)后的现有节数必须等于 更新(7)之前该节中包含的行,加号或减号 从该节插入或删除的行数(插入0, 1)并加上或减去移入或移出的行数 该部分(0移入,0移出)。'

我正在删除核心数据条目,然后在我的代码中删除tableView中的行,但仍然出现上述错误:

func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) {
    if editingStyle == .delete {
        self.feedTable.beginUpdates()
        let event = self.fetchedResultsController.object(at: indexPath) as Event
        self.managedObjectContext.delete(self.fetchedResultsController.object(at: indexPath))
        do {
            try self.managedObjectContext.save()
        } catch {}
        self.feedTable.deleteRows(at: [indexPath], with: .automatic)
        self.feedTable.endUpdates()
    }
}

有人能帮助理解我做错了什么吗?

如果您使用“获取结果”控制器。仅删除带有

self.managedObjectContext.delete(self.fetchedResultsController.object(at: indexPath))
试试这个解决方案

func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) {
    if editingStyle == .delete {

        let event = self.fetchedResultsController.object(at: indexPath) as Event
        self.managedObjectContext.delete(self.fetchedResultsController.object(at: indexPath))
        do {
            try self.managedObjectContext.save()
        } catch {}

    }
}

如果使用“获取结果”控制器,则不需要
开始更新
结束更新

。仅删除带有

self.managedObjectContext.delete(self.fetchedResultsController.object(at: indexPath))
试试这个解决方案

func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) {
    if editingStyle == .delete {

        let event = self.fetchedResultsController.object(at: indexPath) as Event
        self.managedObjectContext.delete(self.fetchedResultsController.object(at: indexPath))
        do {
            try self.managedObjectContext.save()
        } catch {}

    }
}

您不需要
开始更新
结束更新

尝试先从表中删除,然后再从核心数据中删除。不起作用:(与以前相同的错误?是的,不幸的是,删除BeginUpdate和EndUpdate并删除,而不仅仅是重新加载表,看看它是否解决了问题?尝试先从表中删除,然后再从核心数据中删除。不起作用。:(与以前相同的错误?是的,不幸的是,删除BeginUpdate和EndUpdate并删除,而不仅仅是重新加载表,看看它是否解决了问题?