http://codingtutor.de/videotraining/core-data-im-detail/?coupon=coredata
Die Präsentation ist Teil der Einführung in Core Data in meinem Kurs Core Data mit Swift im Detail.
Es geht um den Core Data Stack und die Bestandteile wie den Managed Context (NSManagedObjectContext), die Managed Objects (NSManagedObject), den Persistent Store Coordinator, Persistent Store und so weiter.
Außerdem werden wichtige Begriffe erklärt wie atomic / non-atomic Stores, Du lernst außerdem Predicates, FetchRequests und ähnliches kennen.
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 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
8. 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
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
● 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
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
14. 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
15. 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