Upload
jan-brinkmann
View
118
Download
0
Embed Size (px)
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