Core Data: Eine Einführung

Preview:

Citation preview

Core DataEine Einführung

codingtutor.de

Architektur

Core Data

NSManagedObject

NSManagedObject

NSManagedObject

Managed Context (NSManagedObjectContext)

NSPersistentStoreCoordinator

NSPersistentStore

SQLite

Dateisystem

NSManagedObject

NSManagedObject

NSManagedObject

Managed Context (NSManagedObjectContext)

NSPersistentStore

SQLite

Dateisystem

Core Data (üblich)

NSManagedObject

NSManagedObject

NSManagedObject

Managed Context (NSManagedObjectContext)

NSPersistentStoreCoordinator

NSPersistentStore

SQLite

Dateisystem

Die Komponenten im Detail

Entität● lateinisch für “Ding” oder “seiend”● Datenbanksprache für zu speichernde Objekte● Beispiele (inkl. möglicher Beziehung):

○ Bestellung => Artikel○ Kategorie => Artikel○ Einkaufliste => Produkt○ Hersteller => Modell○ usw.

● Jede Entität hat n Attribute● Jedes Attribut hat einen Datentyp

NSManagedObject● Data Models für die Entitäten● Transportieren Daten im Speicher● Pro Datensatz eigenes Objekt● Je Entität ein eigenes Model● Subklasse von NSManagedObject● Von Core Data verwaltet (managed)● Gehören immer zu einem Managed Context

NSManagedObjectContext● In der Praxis meist arbeit mit Managed Object & Context● Enthält Data Models (Managed Objects)● Verwaltet alle Änderungen an Objekten● Einfügen, Löschen, Aktualisieren über den Context● Mehr als ein Context möglich● Der Context ist mit dem PersistentStoreCoordinator verbunden

Persistent Store Coordinator● In der Praxis nicht so häufig verwendet● Ein zentraler Store Coordinator● Interface für den Managed Object Context● Zugriff auf mehrere Stores wird vereinheitlicht

Persistent Store ● Speicherplatz für Managed Objects● Vergleich zu SQL: Datenbankebene● Entitäten im Store: Tabellen● Records sind die Werte der Managed Objects● Unterstützte Typen:

○ binär, XML, SQLite○ eigene Typen können implementiert werden

Store Typen

Atomic vs. Non-Atomic● Bei Änderungen müssen:

○ Atomic-Stores vorab komplett geladen werden○ Non-Atomic Stores nur teilweise geladen werden

● Non-Atomic braucht viel weniger Speicher● Einziger Non-Atomic Type: SQLite● Weitere verfügbare:

○ NSXMLStoreType (XML)○ NSBinaryStoreType (binär)○ NSInMemoryStoreType (RAM, also flüchtig)

● Eigene können implementiert werden:○ Subklasse von NSIncrementalStore erstellen

Wichtig Features fürManaged Objects

FetchRequests● Abruf von Daten über NSFetchRequest● Ungenauer Vergleich zu SQL: SELECT● NSFetchRequest Objekt wird erzeugt● Name der Entität angegeben● Ausgeführt wird der FetchRequest im Managed Context● Ergebnis: Array mit Managed Objects

Predicate● Filter beim Abruf von Daten (siehe FetchRequest)● Ähnlich der WHERE-Bedingung in SQL● Abgebildet über die Klasse NSPredicate● Wird zum NSFetchRequest hinzugefügt● Beispiele:

○ vorname == “Swift Akademie”○ domain == “codingtutor.de”○ alter > 18○ usw

● Können auf Beziehungen angewandt werden

Beziehungen / Relationships

Packliste

name

ArtikelnameistEingepackt

liste

1

n

Zeit für die Praxis

Recommended