17
Core Data Eine Einführung codingtutor.de

Core Data: Eine Einführung

Embed Size (px)

Citation preview

Page 1: Core Data: Eine Einführung

Core DataEine Einführung

codingtutor.de

Page 2: Core Data: Eine Einführung

Architektur

Page 3: Core Data: Eine Einführung

Core Data

NSManagedObject

NSManagedObject

NSManagedObject

Managed Context (NSManagedObjectContext)

NSPersistentStoreCoordinator

NSPersistentStore

SQLite

Dateisystem

NSManagedObject

NSManagedObject

NSManagedObject

Managed Context (NSManagedObjectContext)

NSPersistentStore

SQLite

Dateisystem

Page 4: Core Data: Eine Einführung

Core Data (üblich)

NSManagedObject

NSManagedObject

NSManagedObject

Managed Context (NSManagedObjectContext)

NSPersistentStoreCoordinator

NSPersistentStore

SQLite

Dateisystem

Page 5: Core Data: Eine Einführung

Die Komponenten im Detail

Page 6: Core Data: Eine Einführung

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

Page 7: Core Data: Eine Einführung

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

Page 8: Core Data: Eine Einführung

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

Page 9: Core Data: Eine Einführung

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

Page 10: Core Data: Eine Einführung

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

Page 11: Core Data: Eine Einführung

Store Typen

Page 12: Core Data: Eine Einführung

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

Page 13: Core Data: Eine Einführung

Wichtig Features fürManaged Objects

Page 14: Core Data: Eine Einführung

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

Page 15: Core Data: Eine Einführung

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

Page 16: Core Data: Eine Einführung

Beziehungen / Relationships

Packliste

name

ArtikelnameistEingepackt

liste

1

n

Page 17: Core Data: Eine Einführung

Zeit für die Praxis