Swift核心数据:删除行时无效更新

时间:2018-05-08 15:42:57

标签: swift uitableview core-data

好的,所以我试图从聊天应用中的tableView中删除对话,然后应用程序崩溃了。错误消息如下:

  

CoreData:错误:严重的应用程序错误。抓住了例外   在核心数据更改处理期间。这通常是一个bug   NSManagedObjectContextObjectsDidChangeNotification的观察者。   无效更新:第0部分中的项目数无效   更新(0)后现有部分中包含的项必须是   等于该部分之前包含的项目数   更新(3),加上或减去插入或删除的项目数   该部分(0插入,1删除)和加号或减号的数量   移入或移出该部分的物品(0移入,0移出)。   with userInfo(null)

从错误消息中,数字" 3"实际上是我的对话中的消息数量。换句话说,在这个特定的对话中,总共有3条消息。我的对话和消息之间的结构和关系如下:

  1. 会话和消息之间的关系是一对多,即与许多消息进行1次对话
  2. 我已将删除规则设置为目的地的无效"会话"并反转" message",并将删除规则设置为目的地的级联"消息"和反向"对话"
  3. 我的代码到目前为止我的chatLogViewController:

    func tableView(_ tableView: UITableView, editActionsForRowAt indexPath: IndexPath) -> [UITableViewRowAction]? {
    
    let deleteAction = UITableViewRowAction(style: .destructive, title: "Delete") { (action, indexPath) in
    
        let selectedConversation = self.activeConversations[indexPath.row]
        let context = CoreDataManager.shared.persistentContainer.viewContext
        context.delete(selectedConversation)
    
        do {
            try context.save()
            self.activeConversations.remove(at: indexPath.row)
            self.tableView.deleteRows(at: [indexPath], with: .fade)
    
        } catch let error {
            print(error.localizedDescription)
        }
    }
    
        return [deleteAction]
    }
    

    我不太明白为什么我收到此错误消息。令人沮丧的是,这个错误不会一直弹出。它偶尔发生,但经常发生。

    有人能提供建议吗?

0 个答案:

没有答案