Swift,在对象数组上使用.onDelete

时间:2020-05-01 18:45:43

标签: ios swift

我一直在寻求在应用程序中常用的列表上实现删除功能。我一直在关注有关.onDelete函数使用的一些教程,并按照视频中显示的进行完全设置。据我所知,问题在于它们的代码不适用于我的,因为它们使用简单的字符串或数字数组,而我的列表是根据对象数组生成的。我不完全知道如何操纵它们提供的代码以适用于我的情况。以下是我所拥有的,我将在事后说明问题所在。

struct SavedView: View {
    @State var saves: [SavedModel]

    var body: some View {
        ZStack {
            GeometryReader { metrics in
            VStack {
                if (self.saves.isEmpty) {
                    List {
                        Text("You have nothing saved currently")
                    }
                } else {
                    List {
                        ForEach(self.saves) { result in          
                            Text(result.name).font(.system(size: 26)).fontWeight(.semibold)
                        }
                        .onDelete(perform: deleteItem)
                    }
                }
            }.navigationBarTitle("Saves").navigationBarItems(trailing: EditButton())
            }
        }
    }
    func deleteItem(at offsets: IndexSet) {
        saves.remove(atOffsets: offsets)
    }
}
public struct SavedModel: Codable, Identifiable {
    public let id: Int
    public let name: String

    enum CodingKeys: String, CodingKey {
        case id = "id"
        case name = "name"
    }
}

从本教程中准确地获取并应用的代码本身存在的问题是,它表明我需要将.onDelete(perform:deleteItem)更改为.onDelete(perform:self.deleteItem),而改为save.remove(atOffsets:offsets),self.saves.remove(atOffsets:offsets)的问题是,它说self.XXX变量无法突变,因此我无法删除它,然后每当更改它周围没有自我。,我只会遇到更多的问题。我真的不知道该怎么办。任何帮助将不胜感激。

0 个答案:

没有答案