Swift, используя .onDelete для массива объектов - PullRequest
0 голосов
/ 01 мая 2020

Я искал возможность реализовать функцию удаления в списках, которая обычно используется в приложениях. Я следовал нескольким урокам, касающимся использования функции .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 (execute: deleteItem) на .onDelete (execute: self.deleteItem) и вместо saves.remove (atOffsets: offsets), self.saves.remove (atOffsets: offsets) проблема в том, что он говорит, что переменные self.XXX не могут быть видоизменены, поэтому я не могу удалить его, а затем всякий раз, когда я изменяю его, чтобы не иметь self., я просто получаю больше проблем, которые возникают. Я действительно не знаю, что делать. Любая помощь будет принята с благодарностью.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...