Core Data pour Swift : guide complet avec exemples

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Qu'est-ce que Core Data et pourquoi en a-t-on besoin ?

\n\n

Core Data n'est pas une bibliothèque au sens traditionnel (comme Alamofire ou SnapKit), mais un framework puissant d'Apple pour gérer le modèle de données et assurer la persistance des données dans les applications iOS, macOS, tvOS et watchOS. Il est intégré au SDK et ne nécessite pas d'installation séparée via des gestionnaires de paquets comme CocoaPods ou Swift Package Manager.

\n\n

Pourquoi Core Data est-il nécessaire ? Dans le développement moderne d'applications mobiles, il est presque toujours nécessaire de stocker des données localement : qu'il s'agisse d'une liste de tâches, de l'historique des messages, des paramètres utilisateur ou du cache d'actualités. Core Data fournit pour cela une pile complète qui comprend :

\n
    \n
  • Le modèle de données (NSManagedObjectModel) — la description des entités, de leurs attributs et de leurs relations.
  • \n
  • Le contexte (NSManagedObjectContext) — le "brouillon" où vous travaillez avec les objets avant de les sauvegarder.
  • \n
  • Le Persistent Store Coordinator — le pont entre le contexte et le stockage physique (SQLite, XML, fichier binaire, etc.).
  • \n
  • Le Persistent Container — une enveloppe simplifiée (apparue dans iOS 10) qui regroupe tous les composants.
  • \n
\n\n

Contrairement à une utilisation simple de SQLite ou de UserDefaults, Core Data gère automatiquement le cycle de vie des objets, prend en charge l'annulation des modifications, le chargement paresseux, la mise en cache, la validation et même l'intégration avec iCloud. Cela en fait un outil indispensable pour toute application sérieuse manipulant des données.

\n\n

Installation de Core Data

\n\n

Core Data fait partie des frameworks système d'Apple. Vous n'avez pas besoin d'exécuter pip install ou npm install. Pour l'utiliser, il suffit d'importer le framework dans votre projet.

\n\n

1. Ajout du framework au projet

\n

Lors de la création d'un nouveau projet dans Xcode, vous pouvez immédiatement cocher la case "Use Core Data". Si le projet existe déjà, ajoutez le framework manuellement :

\n
    \n
  1. Sélectionnez votre projet dans le navigateur (Project Navigator).
  2. \n
  3. Allez dans l'onglet "General" de votre cible de build (Target).
  4. \n
  5. Faites défiler jusqu'à la section "Frameworks, Libraries, and Embedded Content".
  6. \n
  7. Cliquez sur "+" et sélectionnez CoreData.framework.
  8. \n
\n\n

2. Création du fichier de modèle de données

\n

Vous aurez également besoin d'un fichier avec l'extension .xcdatamodeld. Il est généralement créé automatiquement lors de l'activation de Core Data. S'il n'existe pas, créez un nouveau fichier : File → New → File → Core Data → Data Model.

\n\n

3. Importation dans le code

\n

Dans les fichiers Swift où vous travaillerez avec Core Data, ajoutez :

\n
import CoreData
\n\n

L'installation est terminée. Core Data est prêt à être utilisé.

\n\n

Démarrage rapide : exemple de code

\n\n

Considérons un exemple très simple : création d'une entité "User" avec les attributs "name" et "age", sauvegarde et lecture des données.

\n\n

Étape 1 : Création du modèle de données

\n

Ouvrez le fichier .xcdatamodeld. Ajoutez une entité (Entity) nommée "User". Ajoutez les attributs : name (type String) et age (type Int16). Créez une classe pour cette entité : Editor → Create NSManagedObject Subclass. Xcode générera les fichiers User+CoreDataProperties.swift et User+CoreDataClass.swift.

\n\n

Étape 2 : Configuration du Persistent Container

\n

Dans AppDelegate (ou dans un gestionnaire séparé), créez le conteneur :

\n
import CoreData\n\nclass PersistenceController {\n    static let shared = PersistenceController()\n    \n    let container: NSPersistentContainer\n    \n    init() {\n        container = NSPersistentContainer(name: "YourModelName") // Nom de votre fichier .xcdatamodeld\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                    

Recommendations