SwiftUI中的Bug_Detected_In_Client_Of_UITableView_Invalid_Number_Of_Rows_In_Section崩溃

问题描述

我正在运行iOS 14.0.1,针对iOS14的Xcode 12.0.1。

我在CoreData中有数据,可以将其拉出并显示在SwiftUI列表/ ForEach中。在iOS13上运行正常,但是当我进入iOS14时开始出现间歇性崩溃。在向核心数据添加新对象然后返回到列表/ ForEach视图之后,它会重新绘制列表,但有时它会过度计数元素的数量,并会因Bug_Detected_In_Client_Of_UITableView_Invalid_Number_Of_Rows_In_Section而崩溃。由于来自Core Data的实体数组是可观察的并直接映射到List / ForEach,所以我完全无法控制计数。它永远不会在iOS 14模拟器上崩溃,而只能在真实的iPhone上崩溃。每当我添加新条目时,它都不会崩溃,只是有时看起来是随机的。它从未在模拟器或真实的iPhone上的iOS13上崩溃过。

这是显示列表的代码

    List {
      ForEach(self.locations,id: \.self) { location in
        LocationView(currentLocation: location)
      }
      .onDelete(perform: self.deleteSelectedRow)
    }

还有其他人遇到这个问题吗?使用CoreData创建的可观察对象似乎是iOS14 ForEach处理的一些内部错误,但是如果那是真的,我认为很多人都会遇到相同的问题,但是我没有看到有关此问题的任何评论。有人有什么想法吗?

在此先感谢所有想法,并帮助任何人都可以给予帮助!

解决方法

崩溃是由于SwiftUI框架中的基础TableView代码引起的。 请参阅此链接以获取更多信息:https://developer.apple.com/forums/thread/129956?page=1#650267022