SwiftUI - Как удалить строку в Entity в CoreData - PullRequest
1 голос
/ 22 апреля 2020

Я пытаюсь разработать приложение для ввода значений в сущности, которые отображаются в списке. Но когда я удаляю их из списка, они не удаляются в базе данных. У вас есть решение?

struct ViewList: View {
    @Environment(\.managedObjectContext) var context
    @State var newName: String = ""

    @FetchRequest(
        entity: ItProduct.entity(),
        sortDescriptors: [NSSortDescriptor(keyPath: \ItProduct.name, ascending: true)]
    ) var list: FetchedResults<ItProduct>


    var body: some View {
        VStack {
            HStack {
                TextField("I insert the name of the list", text: $newName)
                Button(action: {
                    if self.newName != "" {self.add()}
                    }) { Image(systemName: "plus")}
            }
            List {
                ForEach(list, id: \.self) { i in
                    ViewItem(product: i)
                }.onDelete { indexSet in
                    for index in indexSet {
                        self.context.delete(self.list[index])
                    }
                }
            }
        }
    }
}

1 Ответ

0 голосов
/ 23 апреля 2020

Что ж, если все настроено правильно, ваш код должен работать.
За исключением ... если, возможно, вы ищете постоянство данных между запусками приложений, и в этом случае вам необходимо в какой-то момент сохранить контекст CoreData .

try? self.context.save()

Решение:

.onDelete { indexSet in
    for index in indexSet {
        self.context.delete(self.list[index])
        try? self.context.save()
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...