首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >删除UITableView机房错误

删除UITableView机房错误
EN

Stack Overflow用户
提问于 2016-02-13 21:44:50
回答 2查看 20关注 0票数 0

在尝试删除TableView项时,我将得到以下错误。

由于未命名的异常“NSInternalInconsistencyException”终止应用程序,原因是:“无效更新:节0中的无效行数。更新(4)之后包含在现有节中的行数必须等于更新(4)之前包含在该节中的行数,加上或减去从该节插入或删除的行数(0插入,1已删除),加上或减去移入或移出该节的行数(0移动,0移出)。”

我使用以下代码:

代码语言:javascript
复制
override func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath) {

if editingStyle == .Delete {

    let roomToDelete : House = self.frc.objectAtIndexPath(indexPath) as! House
    moc.deleteObject(roomToDelete)

    do {
        try moc.save()
      } catch {
        print("Failed to save upon delete")
        return
     }

   tableView.deleteRowsAtIndexPaths([indexPath], withRowAnimation: .Automatic)
   self.tableView.reloadData()

   }

}

如果关闭最后两行代码,则不会得到错误,但该行不会删除,因为我只是从Core数据中删除数据。如果我离开这张桌子还回去的话,那行就没了。我认为这个错误是因为我没有将移除的行与节中的行数联系起来,所以存在不匹配。我所做的所有搜索都带有类似于我所拥有的程序。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-02-15 22:48:49

我能让它通过-

1)移除

代码语言:javascript
复制
tableView.deleteRowsAtIndexPaths([indexPath], withRowAnimation: .Automatic)

从提交编辑样式函数和

2)增加

代码语言:javascript
复制
self.tableView.reloadData()

到viewDidLoad函数的末尾

票数 0
EN

Stack Overflow用户

发布于 2016-02-14 08:58:03

您应该将视图控制器设置为FRC委托,并使用委托方法更新表视图。由于FRC是您的数据源,它必须知道删除的情况,才能更新行计数。

在提交方法中,应该只是从上下文中删除对象。不应从表中删除行或重新加载表(应由FRC委托方法完成)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35385674

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档