Привет и добро пожаловать!
Это вторая статья о CoreData, если вы не знаете, как использовать CoreData в своем проекте, приглашаю вас прочитать первую статью из этой серии:
В первой статье мы узнали, как настроить CoreData и как использовать его в реальном проекте. Мы создали действительно простое приложение для списка задач, и все работало очень хорошо.
Но пользователь должен иметь возможность удалять элементы так же просто, как и создавать их.
Удалить элементы из CoreData на самом деле легко, со временем я использовал много методов, позволяющих пользователям удалять элементы, и я объясню каждый из них здесь.
Не забудьте использовать @Environment(.managedObjectContext) var moc в своем представлении!
Использование метода .onDelete
На мой взгляд, это наиболее распространенный способ удаления элементов в CoreData при использовании списков.
Пользователю просто нужно провести пальцем по элементу влево, чтобы отобразить красную кнопку с надписью «Удалить». Мы все уже видели этот метод в других приложениях, поэтому пользователю несложно его использовать.
Вы также можете добавить EditButton(), который упростит этот процесс.
Сначала нам нужно создать функцию, которая позволит нам найти элемент из CoreData и удалить этот элемент:
Затем мы используем эту функцию с элементами нашего списка. Обратите внимание, что если у вас есть другие списки с разными объектами, вы должны создать разные функции для каждого из них и добавить их в каждый список.
Использование кнопки удаления
Использование кнопки удаления идеально подходит для некоторых случаев, например, скажем, вы создали DetailView() для элемента, хороший способ сделать это — поместить кнопку в любом месте внутри, чтобы предложить пользователю удалить этот конкретный элемент.
Я использовал это в подробных представлениях или для пользовательских элементов ForEach в представлениях прокрутки, но это всего лишь некоторые идеи о том, как использовать этот метод. Вы, конечно, можете использовать его в списке.
Код довольно прост: вы создаете кнопку и сообщаете CoreData, что хотите удалить этот конкретный элемент, затем сохраняете изменения с помощью try self.moc.save() и, наконец, создаете метку.
Использование .contextMenu с кнопкой удаления
Например, если вы не хотите показывать кнопку удаления, потому что она не всегда выглядит красиво, можно добавить ее с помощью.contextMenu().
.contextMenu прост, пользователю нужно нажать и удерживать элемент, и появится всплывающее меню, где вы добавите кнопку удаления.
Код такой же, как и раньше, вы только добавляете кнопку внутри модификатора .contextMenu {}
И все, что вам нужно сделать, это удерживать элемент, пока не откроется это меню. Вы можете добавить больше кнопок здесь, если хотите.
Спасибо за чтение этой статьи, если вы хотите узнать больше о SwiftUI, пожалуйста, подпишитесь на меня!
Все методы протестированы с iOS 14.4.