我一直在寻求在应用程序中常用的列表上实现删除功能。我一直在关注有关.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变量无法突变,因此我无法删除它,然后每当更改它周围没有自我。,我只会遇到更多的问题。我真的不知道该怎么办。任何帮助将不胜感激。