首页 > 解决方案 > SwiftUI 致命错误:索引超出范围:文件 Swift/ContiguousArrayBuffer.swift

问题描述

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

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 包装器,似乎工作正常。这一切都很好,直到我尝试减少步进器,并且我得到索引超出范围错误(这令人惊讶地显示了应用程序委托中发生的错误)......任何想法如何解决这个问题?

标签: iosarraysswiftxcodeswiftui

解决方案


推荐阅读