ios - 快速点击删除后单元格滞后

标签 ios swift uitableview core-data

所以我制作了一个表格 View ,其中填充了 CoreData 对象。单元格本身有一个用于标题和其他两个按钮的自定义类。但是删除方法是经典的苹果类型:

 func tableView(tableView: UITableView, editActionsForRowAtIndexPath indexPath: NSIndexPath) -> [UITableViewRowAction]?

无论如何,所有单元格都加载得很好,我可以对它们进行排序,更改它们的值等,但是,当我在向左滑动后点击删除时,单元格保持固定在滑动位置,我在控制台:

“CoreData:错误:严重的应用程序错误。在调用 -controllerDidChangeContent 期间从 NSFetchedResultsController 的委托(delegate)捕获了异常:无效更新:第 0 节中的行数无效。之后的现有节中包含的行数更新 (8) 必须等于更新 (8) 之前该部分中包含的行数,加上或减去从该部分插入或删除的行数(0 插入,1 删除)加上或减去行数移入或移出该部分的行数(0 移入,0 移出)。with userInfo (null) "

在那之后,我无法对该单元格执行任何操作。有趣的是,单元格本身和 CoreData 对象被删除了,因为如果我将 View 从 TableView Controller 更改为我的主视图,然后再次更改为 TableView ,单元格将不再存在。起初我以为我只需要调用

     tableView.reloadData()     

方法,但是没有用。 请注意,这不会导致崩溃,但如果我再次点击删除按钮,毫无疑问它会崩溃,因为对象已成功删除。

这里有什么想法吗?

最佳答案

UI 与 Core Data 是分开的。 Core Data 是持久层,您希望显示的数据会在 UI 中得到镜像。

您正在删除 Core Data 中的数据,但没有正确更新 UI。

如果您使用的是 NSFetchedResultsController,那么您的委托(delegate)方法就会出错。使用调试器和断点来找出您没有从 UI 中正确删除该行的原因。

如果您没有使用 NSFetchedResultsController,那么您的 TableView 删除通知是不正确的。

关于ios - 快速点击删除后单元格滞后,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32950414/

相关文章:

ios - Iphone开发资源

ios - NSURL 中的奇怪编码形式(在“http :)”之后包含反斜杠和前斜杠

ios - API MISUSE(APPLE) 'NSMutableArray' 方法 'addObject:' 的参数不能为 nil

ios - 如何使用快速委托(delegate)与 cocoa

ios - Swift 中的 "' CGFloat ' is not convertible to ' Double '"错误(iOS)

ios - 无法关闭键盘 iOS。没有任何作用

ios - swift - UITableView 部分插入

ios - iPhone:默认隐藏 UITableView 搜索栏

ios - UIImageView 重复显示在另一个单元格中

ios - popViewControllerAnimated 之后 UINavigationBar 下的 UITableView