Привет и добро пожаловать!

Это вторая статья о CoreData, если вы не знаете, как использовать CoreData в своем проекте, приглашаю вас прочитать первую статью из этой серии:

Настройка CoreData в SwiftUI

В первой статье мы узнали, как настроить 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.