经过几个小时的调试后,我发现错误出在MenuItemView文件夹中的foreach 循环内ContentViews。
应用程序崩溃,错误是:
Fatal error: Index out of range: file Swift/ContiguousArrayBuffer.swift, line 444。
信息:
我有一个内部的 anObservableObject 作为Array数据Structs存储。
问题:
ForEach 在 0 和数组计数 + 1 之间。这样我就可以有一个额外的项目来添加新元素。在 ForEach 中检查索引是否在范围内(if (idx >= palettesOO.palettes.count)然后显示加号)。
但是当我右键单击任何单元格并单击“删除”时,它会崩溃。RemovePalette这调用了类中的函数Manager。数据从内部的数组中删除ObservableObject- 这也有效。
调用该函数后,应用程序崩溃(我知道这一点是因为我在函数调用后打印了一条消息)。我发现当视图重绘(更新)时会发生崩溃。
如果我有一个不需要绑定的视图元素,例如 a Text,那么它可以工作,如果它需要绑定,例如 a ,TextField它就会崩溃。Text(palettesOO.palettes[idx].palName)ForEach 内的 else 内部可以工作,但需要绑定的视图元素或子视图不起作用:TextField("", text: $palettesOO.palettes[idx].palName)崩溃。
我尝试过用类似的东西修改 ForEach但没有成功。
代码和数据:
class PalettesOO: ObservableObject {
@Published var palettes = …Run Code Online (Sandbox Code Playgroud)