Arrays 在SwiftUI中的forEach期间向数组添加textfield输入

Arrays 在SwiftUI中的forEach期间向数组添加textfield输入,arrays,swift,swiftui,Arrays,Swift,Swiftui,我是Swift/SwiftUI新手,尝试在foreach期间将textfield值存储在数组中。但是,我遇到了一条线程1:致命错误:索引超出范围的消息。存储值是发生在视图(视图模型)之外,还是可以在视图内部完成 struct OrderView: View { @Binding var groupsize: Int @State var nameArray = [String]() var body: some View {

我是Swift/SwiftUI新手,尝试在foreach期间将textfield值存储在数组中。但是,我遇到了一条线程1:致命错误:索引超出范围的消息。存储值是发生在视图(视图模型)之外,还是可以在视图内部完成

struct OrderView: View {
    
    @Binding var groupsize: Int
    
    @State var nameArray = [String]()
    
    var body: some View {
            
            VStack {          
                
                ForEach(0 ..< groupsize) { index in
                    TextField("Insert name", text: $nameArray[index])}
                
            }
              
    }
}
struct OrderView:View{
@绑定变量groupsize:Int
@状态变量nameArray=[String]()
var body:一些观点{
VStack{
ForEach(0..
考虑到评论中所有的好建议,您可以尝试以下方法:

struct OrderView: View {
    @Binding var groupsize: Int
    @State var nameArray = [String]()
    
    var body: some View {
        VStack {
            if nameArray.count > 0 {
                ForEach(0 ..< groupsize) { index in
                    TextField("Insert name", text: $nameArray[index])}
            }
        }.onAppear(perform: {
            if groupsize > 0 {
                nameArray = [String](repeating: "", count: groupsize)
            }
        })
    }
}
struct OrderView:View{
@绑定变量groupsize:Int
@状态变量nameArray=[String]()
var body:一些观点{
VStack{
如果nameArray.count>0{
ForEach(0..0{
nameArray=[String](重复:“”,计数:groupsize)
}
})
}
}

为什么不将
groupsize
替换为
nameArray.count
?这是因为我要存储的值的数量取决于来自上一个视图的
groupsize
变量。
groupsize
nameArray.count
这是每个(0..的问题所在,但正如@George_E所提到的,这可能不是一个好的设计choice@aheze这不管用