带有核心数据删除错误的 NSFetchedResultsController

Posted

技术标签:

【中文标题】带有核心数据删除错误的 NSFetchedResultsController【英文标题】:NSFetchedResultsController with Core Data- Deletion Error 【发布时间】:2018-07-14 03:18:52 【问题描述】:

我有一个对象的核心数据集,我将它们放入表格单元格中。但是,我还有另一组“间隔”单元格,它们位于每个表格单元格之间。 因此,当我返回 NumberOfRowsInIndexPath 时,我返回获取的结果计数 * 2。 但是,当我删除单元格时,出现此错误:

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

有什么方法可以告诉 XCode 忽略这个错误? 我在其他地方读到这是一个潜在的错误。 无论如何,我已经查看了我的 NSFetchedResultsController 委托,并且我确定代码是正确的。

【问题讨论】:

您是否正确实施了-controllerDidChangeContent:?在这种方法中不看代码很难给出建议。您会分享此方法中的代码以便更好地理解吗? 到目前为止你做了什么?代码本身在哪里?我认为这不是你说的错误。 您需要像其他人所说的那样显示您的代码,但本质上您的问题是您只从表中删除一行,但从numberOfRowsInSection 返回的值表明您已删除 2。您还需要删除关联的“间隔”单元格。 【参考方案1】:

使用这些间隔单元会让您的生活变得艰难,在添加、删除和移动行时保持所有同步将非常复杂。

您应该重新设计您的 UI,通过在实际单元格的底部放置空白空间来不需要间隔单元格,或者如果这听起来不可行,则可以使用 UICollectionView

【讨论】:

以上是关于带有核心数据删除错误的 NSFetchedResultsController的主要内容,如果未能解决你的问题,请参考以下文章

如何从数据数组中删除对象(核心数据)

带有谓词的 ios 核心数据错误

使用 NSSortDescriptor 按时间错误排序(带有核心数据)

删除子视图中的核心数据后更新表视图

核心数据:如何处理新版本?

核心数据关系在删除后导致保存错误