Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/17.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 onDelete从ForEach获取var_Swift_List_For Loop_Swiftui - Fatal编程技术网

Swift onDelete从ForEach获取var

Swift onDelete从ForEach获取var,swift,list,for-loop,swiftui,Swift,List,For Loop,Swiftui,我有以下代码: struct CreateInfo: Identifiable { var id: String var name: String var time: String var day: String var isDeleted: Bool } struct ZettelView: View { @State var zettelInfos = [CreateInfo]() @State private v

我有以下代码:

struct CreateInfo: Identifiable {
    var id: String
    var name: String
    var time: String
    var day: String
    var isDeleted: Bool
}

struct ZettelView: View {
    
    @State var zettelInfos = [CreateInfo]()
    
    @State private var showingAlert = false

    @State private var savedValueForDeleteFunction: CreateInfo
    
    func createNewInfo() {
        
        var arr = [[String]]()
        arr = getZettelData()
                
        
        for x in arr {
            zettelInfos.append(CreateInfo(id: "\(x[0])", name: "\(x[1])", time: "\(x[2])", day: "\(x[3])", isDeleted: false))
        }
        
        self.executeThisAsyncThing = false
        
   }
    
    
    @State var executeThisAsyncThing: Bool = true
    
    
    
    var body: some View {
    
        
        DispatchQueue.main.async {
            if self.executeThisAsyncThing {
                self.createNewInfo()
            }
        }
            
        
        return VStack {
            
            //New - testing
            NavigationView {
                List {
                    ForEach(zettelInfos) { x in
                                                
                        
                        NavigationLink(destination: zettelDetailView(uuid: x.id, info: x)) {
                            Text("\(x.id)")
                            
                        }

                        
                    }.onDelete(perform: delete)
                    
                }.navigationBarTitle("Einkaufszettel")
                .navigationBarItems(trailing: Button(action: {
                    self.addRow()
                }) {
                    Image(systemName: "plus.app.fill")
                })
                
            }

         .alert(isPresented: $showingAlert) {
                Alert(title: Text(" meImportantssage"), message: Text("Wear sunscreen"), dismissButton: .default(Text("Got it!")))
            }
            
            
            
        }

        
    }
    
    func delete(at offsets: IndexSet) {
                
        zettelInfos.remove(atOffsets: offsets)
        self.showingAlert = true
                
    }
    
    
        private func addRow() {
            
            let dateAndTime = Date()
            let dfDay = DateFormatter()
            let dfTime = DateFormatter()
            
            dfDay.dateFormat = "dd.MM.yyyy"
            dfTime.dateFormat = "HH:mm:ss"

            let day = dfDay.string(from: dateAndTime)
            let time = dfTime.string(from: dateAndTime)
            
            
            let x = CreateInfo(id: UUID().uuidString, name: "Neuer Zettel", time: time, day: day, isDeleted: false)
            
            saveZettelData(x: x)
            zettelInfos.append(x)
            

        }
    


}
所以我的问题是,如何将ForEach中的x变量解析为delete func

我为什么要这个?->foreach中的x变量有一个UUID,我需要
x

你们中有谁知道如何从
x
获取UUID吗


这是我第一个使用swift的应用程序,我正在尝试学习它,但在某些情况下,它的方式与我所知道的其他语言不同。通常情况下,我会将一个值解析为delete函数,然后对其进行迭代,以查找并删除特定的行/数据,但在swift中,我想这是另一种方法

func delete(at offsets: IndexSet) {
            
    let index = offsets[offsets.startIndex]
    let x = zettelInfos[index]

    // ... do anything needed with x.id now

    zettelInfos.remove(atOffsets: offsets)
    self.showingAlert = true
}