如何使用 SwiftUI 的 onDelete() 函数访问数组位置

How to access the array position using SwiftUI's onDelete() function

我正在尝试将 UI 删除与从 CloudKit 删除记录同步。 SwiftUI 具有 onDelete() 功能,您可以将其添加到列表视图中,让您可以通过滑动来删除手势。我正在尝试使用它来访问已删除项目数组中的位置,以便我可以在另一个函数中引用它来处理从 Cloud Kit 中删除的操作。以下是 SwiftUI 设置 onDelete().

的方式
List {
    ForEach(recordsHandler.audioRecords) { record in
        Button(action: {
            //set the showModal variable to true to show DetailModalView
            self.showModal = true
            self.recordToPass = record
        }) {
            AudioRowView(audio: record)
     }
     .sheet(isPresented: self.$showModal) {
         PlaybackModalView(selectedRecord: self.recordToPass).environmentObject(self.recordsHandler)
     }
}
.onDelete(perform: delete)

下面是我的自定义行视图。并没有真正增加问题,但以防万一。

struct AudioRowView: View {

    var audio: Audio

    var body: some View {
        HStack {
            Text(audio.title)
                .padding(5)
            Spacer()
            Text(audio.type)
                .padding(10)
                .background(Color.black)
                .foregroundColor(Color.white)
                .cornerRadius(20)
        }
        .frame(height: 50)
    }
}

下面是目前的删除功能,提供滑动手势并从列表视图中删除条目。如前所述,我现在正试图破译该行在数组中的位置,因此我可以在另一个函数中调用它并继续从 CloudKit.

中删除条目
func delete(at offsets: IndexSet) {
    recordsHandler.audioRecords.remove(atOffsets: offsets)
}

因为给了你偏移量,所以你可以一一告诉:

 func delete(at offsets: IndexSet) {
recordsHandler.audioRecords.remove(atOffsets: offsets)
    for row in offsets{
        print(row)}
}