Ios SwiftUI致命错误:索引超出范围:文件Swift/ContiguousArrayBuffer.Swift

Ios SwiftUI致命错误:索引超出范围:文件Swift/ContiguousArrayBuffer.Swift,ios,arrays,swift,xcode,swiftui,Ios,Arrays,Swift,Xcode,Swiftui,我有一个作为数组的环境对象,在我的设置页面中有一个面板,用户可以在其中向数组添加/删除值…以下是为用户直观显示的数组中的项目列表: ScrollView { VStack { ForEach(self.env.numbers.indices, id: \.self) { number in ZStack { HStack { Text("#\(number + 1)

我有一个作为数组的环境对象,在我的设置页面中有一个面板,用户可以在其中向数组添加/删除值…以下是为用户直观显示的数组中的项目列表:

ScrollView {
    VStack {
        ForEach(self.env.numbers.indices, id: \.self) { number in
            ZStack {
                HStack {
                    Text("#\(number +  1): ")
                        .font(Font.custom(K.font.montserratMedium, size: 17.0))
                        .foregroundColor(Color(K.SettingsTextColor))
                    
//                                            Spacer()
                    
                    NumberTextField(self.env.numbers[number], text: self.$env.numbers[number])
        
                }
                
                
                
            }
            
        }
    }
}
在我的视图底部有一个切换,用于更改数组中的项目数:

Stepper(onIncrement: {
    
    self.env.numbers.append("12345")
    print("default number should be added")
    print(self.env.numbers.indices)
    print(self.env.numbers)
    print("count = \(self.env.numbers.count)")
    
},
        
        onDecrement: {
            
            if self.env.numbers.count != 0 {
                print("number should be removed")
                self.env.numbers.removeLast(1)
//              also tried self.env.numbers = self.env.numbers.droplast() but this didnt work
                print(self.env.numbers.indices)
                print(self.env.numbers)
                print("count = \(self.env.numbers.count)")
                
}

NumberTextField视图是一个UIKit UITextField包装器,似乎工作正常。这一切都很好,直到我尝试减少步进器,并且我得到了索引超出范围的错误(这意外地显示了应用程序代理中发生的错误)…有什么办法解决这个问题吗?

看看这是否有帮助:很遗憾,没有,它破坏了我的步进视图…我试图实现这个解决方案,但得到了无法摆脱的额外错误:它不应该与步进视图相关。失败的(可能)是:
self.$env.numbers[number]
。该解决方案允许您将视图包装在
ForEach
中,并直接绑定到
numbers
中的元素,而不是使用index.Cool。如果有帮助,请投票;)正如在另一个问题中所讨论的,这可能是SwiftUI中的一个bug,在幕后SwiftUI仍然试图访问(无序)到现在已删除的值的绑定。我们本来希望ForEach在删除后首先重新计算索引,但出于某种原因,情况并非如此。这个解决方案基本上找到了一个解决办法。。我的意思是,向上投票,让别人注意到它会显得更高