Core Data für Swift: Vollständiger Leitfaden mit Beispielen

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Was ist Core Data und wozu wird es benötigt?

\n\n

Core Data ist keine Bibliothek im herkömmlichen Sinne (wie z.B. Alamofire oder SnapKit), sondern ein leistungsstarkes Framework von Apple zur Verwaltung des Datenmodells und zur Gewährleistung der Persistenz (Speicherung) von Daten in Apps für iOS, macOS, tvOS und watchOS. Es ist im SDK integriert und erfordert keine separate Installation über Paketmanager wie CocoaPods oder Swift Package Manager.

\n\n

Wozu wird Core Data benötigt? In der modernen Entwicklung mobiler Apps ist es fast immer erforderlich, Daten lokal zu speichern: sei es eine Aufgabenliste, der Nachrichtenverlauf, Benutzereinstellungen oder ein Nachrichten-Cache. Core Data bietet hierfür einen vollständigen Stack, der Folgendes umfasst:

\n
    \n
  • Datenmodell (NSManagedObjectModel) — Beschreibung der Entitäten, ihrer Attribute und Beziehungen.
  • \n
  • Kontext (NSManagedObjectContext) — ein "Entwurf", in dem Sie mit Objekten arbeiten, bevor sie gespeichert werden.
  • \n
  • Persistent Store Coordinator — die Brücke zwischen dem Kontext und dem physischen Speicher (SQLite, XML, Binärdatei usw.).
  • \n
  • Persistent Container — ein vereinfachter Wrapper (eingeführt in iOS 10), der alle Komponenten zusammenfasst.
  • \n
\n\n

Im Gegensatz zur einfachen Verwendung von SQLite oder UserDefaults verwaltet Core Data automatisch den Lebenszyklus von Objekten, unterstützt das Rückgängigmachen von Änderungen, Lazy Loading, Caching, Validierung und sogar die Integration mit iCloud. Dies macht es zu einem unverzichtbaren Werkzeug für jede ernsthafte App, die mit Daten arbeitet.

\n\n

Installation von Core Data

\n\n

Core Data ist Teil der System-Frameworks von Apple. Sie müssen kein pip install oder npm install ausführen. Für die Verwendung reicht es aus, das Framework in Ihr Projekt zu importieren.

\n\n

1. Hinzufügen des Frameworks zum Projekt

\n

Beim Erstellen eines neuen Projekts in Xcode können Sie sofort das Häkchen "Use Core Data" setzen. Wenn das Projekt bereits existiert, fügen Sie das Framework manuell hinzu:

\n
    \n
  1. Wählen Sie Ihr Projekt im Navigator (Project Navigator) aus.
  2. \n
  3. Gehen Sie zum Tab "General" Ihres Ziel-Builds (Target).
  4. \n
  5. Scrollen Sie nach unten zum Abschnitt "Frameworks, Libraries, and Embedded Content".
  6. \n
  7. Klicken Sie auf "+" und wählen Sie CoreData.framework.
  8. \n
\n\n

2. Erstellen der Datenmodelldatei

\n

Sie benötigen außerdem eine Datei mit der Erweiterung .xcdatamodeld. Diese wird normalerweise automatisch erstellt, wenn Core Data aktiviert wird. Wenn sie nicht vorhanden ist, erstellen Sie eine neue Datei: File → New → File → Core Data → Data Model.

\n\n

3. Import im Code

\n

Fügen Sie in den Swift-Dateien, in denen Sie mit Core Data arbeiten, Folgendes hinzu:

\n
import CoreData
\n\n

Damit ist die Installation abgeschlossen. Core Data ist bereit zur Verwendung.

\n\n

Schnellstart: Codebeispiel

\n\n

Betrachten wir ein einfaches Beispiel: Erstellen einer Entität "User" mit den Attributen "name" und "age", Speichern und Lesen von Daten.

\n\n

Schritt 1: Erstellen des Datenmodells

\n

Öffnen Sie die Datei .xcdatamodeld. Fügen Sie eine Entität (Entity) mit dem Namen "User" hinzu. Fügen Sie die Attribute hinzu: name (Typ String) und age (Typ Int16). Erstellen Sie eine Klasse für diese Entität: Editor → Create NSManagedObject Subclass. Xcode generiert die Dateien User+CoreDataProperties.swift und User+CoreDataClass.swift.

\n\n

Schritt 2: Konfiguration des Persistent Containers

\n

Im AppDelegate (oder in einem separaten Manager) erstellen wir den Container:

\n
import CoreData\n\nclass PersistenceController {\n    static let shared = PersistenceController()\n    \n    let container: NSPersistentContainer\n    \n    init() {\n        container = NSPersistentContainer(name: "YourModelName") // Name Ihrer .xcdatamodeld-Datei\n        container.loadPersistentStores { (storeDescription, error) in\n            if let error = error as NSError? {\n                fatalError("Unresolved error \\(error), \\(error.userInfo)")\n            }\n        }\n    }\n    \n    var cont                    

Empfehlungen