Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 带有文本字段的ForEach onDelete错误_Swift_Foreach_Swiftui - Fatal编程技术网

Swift 带有文本字段的ForEach onDelete错误

Swift 带有文本字段的ForEach onDelete错误,swift,foreach,swiftui,Swift,Foreach,Swiftui,我不明白这怎么不是一个bug。Delete可以处理文本,但不能处理TextField。失败,索引超出范围异常 import SwiftUI struct ContentView: View { @State private var messages = ["one", "two"] var body: some View { NavigationView { List {

我不明白这怎么不是一个bug。Delete可以处理文本,但不能处理TextField。失败,索引超出范围异常

import SwiftUI

struct ContentView: View {
    @State private var messages = ["one", "two"]
    var body: some View {
        NavigationView {
            List {
                ForEach (messages.indices, id: \.self) { index in
   //                 Text($messages[index]) // Works
                    TextField("", text: $messages[index]) // Bug
                }.onDelete(perform: { indexSet in
                    messages.remove(atOffsets: indexSet)
                })
            }
            .navigationTitle(Text("Messages"))
            .navigationBarItems(trailing:
                Button(action: {
                    messages.append("another")
                }, label: {
                    Image(systemName: "plus.circle.fill")
                }))
        }
    }
}
我尝试了这段新代码,现在可以删除,但有编辑问题

struct ContentView: View {
    @State private var messages = ["one","two"]
    var body: some View {
        NavigationView {
            List {
                ForEach (Array(messages.enumerated()), id: \.element) { index, item in
                    TextField("", text: Binding(
                              get: { self.messages[index] },
                              set: { self.messages[index] = $0 }))
                }.onDelete(perform: { indexSet in
                    messages.remove(atOffsets: indexSet)
                })
            }
            .navigationTitle(Text("Messages"))
            .navigationBarItems(trailing:
                Button(action: {
                    messages.append("another")
                }, label: {
                    Image(systemName: "plus.circle.fill")
                }))
        }
    }
}

这是否回答了您的问题?您的id必须是唯一的。\。自我不是唯一的。对于exmaple,当您删除数组的第二个元素时,第三个元素变为2。@mahan这是真的,但是,如果这是问题的话,它将失败,只有文本视图是正确的?绑定修复程序似乎允许正确删除文本字段,我无法再正确编辑文本字段字符串。这是否回答了您的问题?您的id必须唯一。\。自我不是唯一的。对于exmaple,当您删除数组的第二个元素时,第三个元素变为2。@mahan这是真的,但是,如果这是一个问题,它将失败,只有文本视图正确吗?绑定修复似乎允许正确删除文本字段,但是,我无法再正确编辑文本字段字符串