Core Data Tutorial (5): items wijzigen en verwijderen

Core Data Tutorial

In deze Core Data tutorial bouwen we een app waarin de belangrijkste onderdelen van Core Data aan bod komen.

Deel 1 uit deze tutorial vind je hier.

In deze aflevering zien we hoe we onze notities kunnen wijzigen en verwijderen.

In één dag Core Data leren?

Met de video-opnames van deze nieuwe LIVE Clinic over Core Data leer je in één dag hoe je zelf Core Data in je apps kunt gebruiken. Gewoon thuis, vanachter je Mac!

Meer informatie

Een item wijzigen

Een item wijzigen: Core Data

Omdat onze app volgens het MVC (Model View Controller)-principe is gebouwd, laten we het feitelijke wijzigen en verwijderen van gegevens over aan ons model: Model.swift.

Het wijzigen van een notitie in de Core Data-database is heel eenvoudig. Voeg de volgende methode toe aan Model.swift:

Een item wijzigen: de viewcontroller

Nu ons model een notitie kan wijzigen, kunnen we de gebruiker die mogelijkheid geven: zodra hij over een notitie ‘veegt’, laten we een menu met een Wijzig-optie verschijnen. Dit menu verschijnt automatisch als we onze tableview een antwoord geven op de vraag: ‘wat zijn de wijzig-opties voor deze rij?’. Deze vraag stelt de tableview aan zijn delegate, via de methode tableView(_:editActionsForRowAt:).

Allereerst maken we van de viewcontroller de delegate voor de tableview, door de definitie van de ViewController-class aan te passen:

Nu kunnen we de delegate-methode tableView(_:editActionsForRowAt:) toevoegen. Deze methode moet een optional array met UITableViewRowAction-objecten retourneren: elke UITableViewRowAction heeft een stijl (de manier waarop de menu-optie wordt weergegeven, een titel (de tekst die voor de menu-optie wordt getoond) en een closure die wordt uitgevoerd zodra de gebruiker de menu-optie kiest.

Voeg de volgende delegate-methode toe aan ViewController.swift:

Test je app

Sleep naar links over een tabelrij. Er wordt nu een ‘Wijzig’-optie getoond:

Core Data Tutorial: een item wijzigen

Klik erop, waarna een alert verschijnt met de oorspronkelijke titel van de notitie.

Core Data Tutorial: een item wijzigen

Wijzig de notitie:

Core Data Tutorial: een item wijzigen

Zodra je op de OK-button drukt, wordt de tabel opnieuw geladen en zie je de wijzigingen.

Core Data Tutorial: een item wijzigen

Een notitie verwijderen

Een notitie verwijderen: het model

Uiteraard laten we het echte werk over aan het model van onze app.

Voeg de volgende methode toe aan de Model-class:

Een notitie verwijderen: de de viewcontroller

Ook de verwijder-actie wordt een ‘edit-action’. We zouden die actie, met closure, kunnen toevoegen aan de methode die we al hebben geschreven, .tableView(_:editActionsForRowAt:). Die methode wordt daardoor echter heel lang. De oplossing: we schrijven functies voor de afzonderlijke edit-acties.

De .wijzig(notitie:)-methode

Voeg de .wijzig(notitie:)-methode toe aan ViewController.swift. Deze bevat bijna alle code uit de .tableView(_:editActionsForRowAt:)-methode:

Pas nu de .tableView(_:editActionsForRowAt:)-methode aan. Hij wordt een stuk korter:

De nieuwe .verwijder(notitie:)-methode

Op soortgelijke manier handelen we de ‘verwijder’-actie af: we schrijven een ‘verwijder’-methode, die we ook weer kunnen aanroepen vanuit de closure in .tableView(_:editActionsForRowAt:). Voeg de volgende methode toe aan ViewController-swift:

Vlak voordat het item wordt verwijderd, vragen we de gebruiker nog om een bevestiging. De door Apple aangeraden manier om dat te doen is niet via een alert, maar met een action sheet:

Nu kunnen we eenvoudig een edit-actie met een rode ‘Verwijder’-button toevoegen. Wijzig de .tableView(_:editActionsForRowAt:)-methode:

Deze methode retourneert nu dus twee acties: ‘Wijzig’ en ‘Verwijder’.

Test je app

Sleep van rechts naar links over één van de tabelrijen, waarna de acties worden getoond:

Core Data Tutorial: een item verwijderen

Kies Verwijder. Er verschijnt een Action Sheet, met de titel van de notitie die zal worden verwijderd:

Core Data Tutorial: een item verwijderen

Zodra je op Verwijder klikt, wordt de notitie door het model verwijderd. Daarna krijgt de tabel opdracht zich opnieuw te tekenen, waardoor de notitie ook van het scherm verdwijnt:

Core Data Tutorial: een item verwijderen

Samenvatting

In dit artikel heb je gezien hoe je items uit een Core Data-database kunt verwijderen en hoe je de gebruikersinterface kunt maken. In het volgende en laatste artikel zie je hoe je een Core Data-database kunt doorzoeken en hoe je de resultaten aan de gebruiker kunt laten zien.

Klik hier om de Xcode-bestanden van dit artikel te downloaden.

In één dag Core Data leren?

Met de video-opnames van deze nieuwe LIVE Clinic over Core Data leer je in één dag hoe je zelf Core Data in je apps kunt gebruiken. Gewoon thuis, vanachter je Mac!

Meer informatie