Core Data Tutorial (4): Core Data-objecten toevoegen

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 van  onze Core Data Tutorial-serie voegen we Core Data toe aan onze app: het model van onze app (met daarin de Core Data-functionaliteit) levert de informatie aan de viewcontroller van onze app. We zorgen dat de gebruiker notities kan toevoegen en tonen die vervolgens, in omgekeerd chronologische volgorde (de nieuwste notitie staat bovenaan).

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

Core Data Tutorial: een notitie toevoegen

Allereerst voegen we de code toe waarmee de gebruiker een notitie kan maken. Dit doen we met behulp van een alert: een AlertController-object.

Voordat we deze notitie aan het model toevoegen, kijken we de alert doet wat hij moet doen: we tonen de tekst van de ingevoerde notitie in de Console. Als dat werkt, maken we de zaak af door nog wat code in het Model op te nemen; deze code zorgt ervoor dat de notitie daadwerkelijk wordt opgeslagen.

De ViewController: ViewController.swift

We beginnen met het schrijven van de code om een AlertController te tonen, zodat de gebruiker een notitie kan invoeren.

Wijzig, in ViewController.swift, de code van .maakItem(_:) als volgt:

Test je app!

Druk op de ‘Add’-button in de Toolbar:

Core Data Tutorial

Voeg een notitie toe. Druk op OK en kijk of je notitie in de Console verschijnt. Gelukt? Mooi – We zijn er bijna!

Het Model: Model.swift

Nu we de gebruiker om een notitie kunnen vragen, kunnen we deze door het Model laten verwerken. Dit doen we door een maakNotitie(titel:)-methode aan het model toe te voegen.

Zet de volgende code in Model.swift:

Core Data doet zijn werk door de volgende regel:

Dit levert een nieuw object op, van de class Notitie. Dit is een managed object dat door Core Data wordt beheerd. Het heeft de twee belangrijke properties die we in het datamodel (zie de vorige aflevering) als attributes hebben toegevoegd: .datum en .titel.

Nadat de properties van onze nieuwe notitie hun waarden hebben gekregen, zeggen we tegen Core Data dat de notitie kan worden bewaard:

De ViewController: ViewController.swift

Ons Model kan de notitie nu toevoegen, zodat we in de ViewController de opdracht kunnen geven om dat te doen.

We vervangen, in .maakItem()m de print()-opdracht door:

Ook vragen we de tabel om opnieuw om zijn gegevens te vragen.

De complete .maakItem()-methode wordt dus:

Het Model: informatie uit de database ophalen

Nu we een notitie kunnen laten opslaan, schrijven we de code om notities te kunnen opvragen. Voordat we dat doen, passen we de .count-property aan; we vragen aan Core Data hoeveel notities er zijn opgeslagen.

Model.swift: het aantal notities ophalen met de .count-property

Vervang de .count-property in Model.swift door de volgende code:

Hier zie je voor de eerste keer een fetchRequest. Met fetchRequest-objecten (ze hebben de class NSFetchRequest) kun je Core Data vragen om iets uit de database op te halen. Ons fetchRequest is eenvoudig: het is een generiek ‘Notitie’-request, dat we bijvoorbeeld zouden kunnen gebruiken om alle Notitie-objecten op te vragen die in de database staan. We kunnen het echter ook gebruiken om het aantal Notitie-objecten op te vragen en dat doen we op de volgende regel:

Model.swift: een specifieke notitie ophalen

Om een specifieke notitie (en dus niet alle notities) op te halen, maken we een fetchReqest en passen het aan. We wijzigen wat properties en instellingen:

  • .fetchOffset: de ‘index’ van de notitie die moet worden opgehaald (een getal vanaf nul, net als bij de index van een array)
  • .fetchLimit: het aantal notities dat moet worden opgehaald (in ons geval één)
  • .sortDescriptors: een array met beschrijvingen die aangeven hoe de notities moeten worden gesorteerd voordat er eentje wordt ‘uitgeplukt’; in ons geval is dat omgekeerd chronologisch.

Vervang de .notitie(op:)-methode:

Test je app!

Voeg een notitie toe:

Core Data Tutorial

Zodra je op OK drukt, vraagt de viewcontroller aan het Model om de notitie te maken. Daarna vertelt de viewcontroller dat de tableView opnieuw moet worden geladen:

Core Data Tutorial

Je kunt zoveel notities toevoegen als je wilt; elke nieuwe notitie wordt bovenaan de lijst geplaatst.

Core Data Tutorial

Tot slot

Onze app begint al vorm te krijgen! In de volgende aflevering schrijven we de code om items te wijzigen en te verwijderen.

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