Core Data
Eine Einführung
codingtutor.de
Architektur
Core Data
NSManaged
Object
NSManaged
Object
NSManaged
Object
Managed Context (NSManagedObjectContext)
NSPersistent
StoreCoordinator
NSPersistent
Store
SQLite
Dateisystem
NSManaged
Object
NSManaged
Object
NSManaged
Object
Managed Context (NSManagedObjectContext)
NSPersistent
Store
SQLite
Dateisystem
Core Data (üblich)
NSManaged
Object
NSManaged
Object
NSManaged
Object
Managed Context (NSManagedObjectContext)
NSPersistent
StoreCoordinator
NSPersistent
Store
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ür
Managed 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
Artikel
name
istEingepackt
liste
1
n
Zeit für die Praxis

Core Data: Eine Einführung

  • 1.
  • 2.
  • 3.
    Core Data NSManaged Object NSManaged Object NSManaged Object Managed Context(NSManagedObjectContext) NSPersistent StoreCoordinator NSPersistent Store SQLite Dateisystem NSManaged Object NSManaged Object NSManaged Object Managed Context (NSManagedObjectContext) NSPersistent Store SQLite Dateisystem
  • 4.
    Core Data (üblich) NSManaged Object NSManaged Object NSManaged Object ManagedContext (NSManagedObjectContext) NSPersistent StoreCoordinator NSPersistent Store SQLite Dateisystem
  • 5.
  • 6.
    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
  • 7.
    NSManagedObject ● Data Modelsfü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
  • 8.
    NSManagedObjectContext ● In derPraxis 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
  • 9.
    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
  • 10.
    Persistent Store ● Speicherplatzfü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
  • 11.
  • 12.
    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
  • 13.
  • 14.
    FetchRequests ● Abruf vonDaten ü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
  • 15.
    Predicate ● Filter beimAbruf 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
  • 16.
  • 17.