微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

NSFetchedResultsController NSInternalInconsistencyException 崩溃是另一个,但现在有一个示例项目

如何解决NSFetchedResultsController NSInternalInconsistencyException 崩溃是另一个,但现在有一个示例项目

我在我的项目中遇到了以下崩溃的变体:

*** Terminating app due to uncaught exception 'NSInternalInconsistencyException',reason: 'Invalid update: invalid number of rows in section 0. The number of rows contained in an existing section after the update (22) must be equal to the number of rows contained in that section before the update (1),plus or minus the number of rows inserted or deleted from that section (8 inserted,1 deleted) and plus or minus the number of rows moved into or out of that section (0 moved in,0 moved out).'

很快我将转向 diffable 数据源 API,但我真的很想知道我在这里做错了什么,也许我可以向我的 iOS 12 用户发布一个更稳定的告别版本。

我有一个包含两个上下文的 Core Data 设置,一个主要和一个背景。主在后台保存时合并数据,通过通知。这里没有什么开创性的。 NSFetchedResultsControllerDelegate 使用beingUpdates/endUpdates 动画部分更新tableview。我禁用了 NSFetchedResultsChangeUpdate 更新,因此它们不会干扰,以隔离问题的根源。

似乎在更新正在进行时应用程序崩溃,然后通过调用 performFetch 加载 fetchedResultsController。在这种情况下,崩溃日志没有多大帮助。知道去哪里看吗?

有几个很好的来源,例如this 一个,但在这种情况下没有帮助。

感谢您的见解。

这是示例项目:https://filebin.net/xtordf60rs4pmckk SampleSOLongerList.zip 一直崩溃,但由于列表较长,可能更难调试。

坠机视频:https://youtu.be/D7yoojdpkdQ

崩溃仅在全新安装时发生(并非总是如此——如果预加载了更多数据,它会一直发生) 要使应用崩溃,您只需启动它,然后点击“下一步”,大部分时间它都会崩溃。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。