core-dataAan de slag met kerngegevens


Opmerkingen

Core Data is een raamwerk in de verschillende OS SDK van Apple inclusief, maar niet beperkt tot iOS en OS X. Het heeft twee hoofdrollen: een modellaag en een persistentielaag. De modellaag wordt gebruikt bij het beheer van modelobjecten en persistente gegevens. U kunt eenvoudig gegevens opslaan en beheren in een objectgeoriënteerde interface. Primaire functies omvatten filteren, opvragen, sorteren, persistente gegevens en het creëren van relaties tussen gegevens. Andere onderwerpen die van belang zijn voor Core Data-projecten zijn NSPredicate, threading en onder andere.

Een voorbeeldtoepassing van Core Data zou een catalogus-app voor uw lokale bibliotheek kunnen zijn. In de Catalogus-app kan een bibliothecaris boeken toevoegen of verwijderen. Ze kunnen ook boeken filteren op genre, boeken sorteren op publicatiedatum of zoeken naar een specifiek auteurswerk. Een entiteit "Boek" zou verschillende attributen hebben, zoals titel, auteur, publicatiedatum, isbn, oproepnummer, enz. Kerngegevens inclusief het bovenstaande voorbeeld kunnen ook gegevens opslaan die zijn verzameld van een server.

Belangrijke componenten van het raamwerk zijn onder meer:

  • Gegevensmodellen (entiteiten, attributen en relaties)
  • Core Data Stack (NSPersistentStoreCoordinator, NSManagedObjectModel, NSManagedObjectContext)
  • NSFetchRequest
  • NSFetchedResultsController

bronnen:

Kaderdocumentatie

Programmeerhandleiding

Core Data Release Notes 2016

CoreData & Concurrency

Het is belangrijk om te onthouden dat CoreData NIET thread-safe is, wat betekent dat als het nodig is om bijvoorbeeld een achtergrond-thread te gebruiken om aan ManagedObjects te werken, er nieuwe dingen zijn om te overwegen, zoals PrivateQueue- / MainQueue -ManagedObjectContexts.

Uit de Apple-documentaire: Core Data verwacht op een enkele thread te worden uitgevoerd. U mag nooit beheerde objectcontexten tussen threads delen. Dit is een harde regel die je niet moet overtreden.

Het project maken

De eerste actie die moet worden ondernomen, is een nieuw project maken Bestand> Nieuw> Project. Hier is Single View Application geselecteerd, maar u kunt degene kiezen die het beste bij uw project past.

Initiële setup

De volgende stap bij het instellen van kerngegevens is het toevoegen van de informatie aan uw project. Het belangrijkste deel in de onderstaande foto is om "Gebruik kerngegevens" te selecteren

Projectinfo toevoegen

Uw eerste model maken

  • Selecteer het .xcdatamodeld bestand. Je zult merken dat je geen entiteiten hebt. Je moet er zelf een maken. Onderaan Xcode ziet u een knop met de tekst "Entiteit toevoegen" erop klikken en u hebt een nieuwe entiteit waarmee u aan het project kunt werken.

Gegevensmodel

  • In deze stap zijn een paar punten te vermelden. Ten eerste is dat u de naam van uw entiteit hier hebt gewijzigd. De entiteit krijgt de naam Person . Onder het gedeelte attributen voegt u de attributen toe aan uw model. Deze knop is een pluspunt onderaan de sectie. U kunt alle attributen toevoegen die relevant zijn voor uw app. Als u bijvoorbeeld een app voor een contactboek maakt, hoeft u het model van een persoon geen attribuut Arms van het type Boolean . U moet het gerelateerd houden aan uw app. Bijvoorbeeld het toevoegen van een telephone met het type Integer of als u String wilt. Je hebt verschillende soorten opties om uit te kiezen, variërend van Booleans tot Dates en meer.

Uw model maken

  • Nadat u tevreden bent met uw model, kunt u de subklasse NSManagedObject maken.

Maak NSManagedObjectSubclass

Gegevensmodel selecteren

Selecteer de te beheren entiteit

  • Hier kunnen we twee belangrijke dingen zien. Ten eerste is die persoon (hetzelfde als de naam van uw entiteit) een subklasse van NSManagedObject. Dit is belangrijk voor uw Core Data Stack. Ten tweede moet u twee bestanden maken, een klasse Person.swift en een extensie van Person genaamd Person+CoreDataProperites.swift .

  • Alle toevoegingen moeten worden gedaan in Person.swift , want als u ooit uw model wijzigt en de klassengenerator opnieuw uitvoert, wordt alles in Person+CoreDataProperties.swift .

Person.swift

Persoon + CoreDataProperites.swift