Module 10 - Note de cours

← Retour au module principal

Core Data et SwiftUI

Introduction

Dans le développement iOS, il est courant de stocker des données structurées (par exemple, listes de contacts, tâches, produits, etc.).

Problème avec les bases de données traditionnelles :

Utiliser directement des bases de données embarquées comme SQLite nécessite des connaissances en SQL et engendre une complexité dans le code (nature non orientée objet).

Solution proposée par Apple :

Core Data est un framework qui permet de travailler avec les données sous forme d’objets Swift. Il encapsule les interactions avec la base de données (par défaut SQLite) et simplifie le traitement des données en éliminant la nécessité de maîtriser le SQL.

Les Principaux Composants de Core Data (Core Data Stack)

La Stack Core Data se compose de plusieurs objets qui travaillent ensemble pour gérer le stockage persistant :

Diagramme de la Stack Core Data

Référence : Neil Smyth. iOS 18 App Development Essentials. Payload Media, Inc.

Persistent Container

Rôle :

Persistent Container gère la création de la pile Core Data et est conçu pour être facilement sous-classé afin d'ajouter des méthodes spécifiques à l'application à la fonctionnalité de base de Core Data. Une fois initialisé, l'instance de conteneur persistant fournit l'accès au contexte de l'objet géré.

Fonctions clés :

Managed Object Context (MOC)

Rôle :

Le MOC agit comme une zone tampon qui contient les objets gérés (instances de NSManagedObject ou de ses sous-classes) avec lesquels l’application interagit.

Fonctions clés :

Managed Object Model

Rôle :

Il définit la structure des données sous forme d’entités (semblables aux tables dans une base de données relationnelle).

Contenu :

Persistent Store Coordinator

Rôle :

Il gère les persistent stores (fichiers de stockage) et coordonne les interactions entre le MOC et le store.

Fonctions clés :

Persistent Store

Rôle :

C’est le support de stockage réel. Par défaut une database SQLite.

Fonctions clés :

Création et édition du modèle de données

Définition du modèle d’entités dans Xcode

Lors de la création d’un projet avec Core Data, Xcode génère un fichier .xcdatamodeld. Ce fichier sert de modèle pour structurer les données que l’application va gérer. Il définit les entités, leurs attributs, et les relations entre elles, permettant ainsi à Core Data d'interpréter et manipuler ces objets.

Diagramme de la Stack Core Data Modèle d'entités dans Xcode

Exemple de modèle d'entités dans Xcode.

Pourquoi utiliser un modèle d’entités ?

Ce fichier vous permet de :

Étapes pour définir une entité :

  1. Ouvrez le fichier .xcdatamodeld dans Xcode.
  2. Cliquez sur “Add Entity” en bas du panneau de gauche.
  3. Renommez l’entité par un nom significatif (ex. : “Product” pour stocker des informations sur les produits).
  4. Ajoutez des attributs en cliquant sur le bouton “+” sous la section Attributes.
  5. Définissez le type de chaque attribut :
    • String : Pour stocker du texte (ex. : nom du produit).
    • Integer : Pour stocker des nombres entiers (ex. : stock disponible).
    • Double : Pour stocker des nombres décimaux (ex. : prix).
    • Date : Pour enregistrer une date (ex. : date d’ajout).
    • Boolean : Pour des valeurs vraies ou fausses (ex. : disponible en stock ?).
  6. Si nécessaire, établissez des relations avec d'autres entités en utilisant l’onglet “Relationships”. Par exemple, une entité “Product” peut être liée à une entité “Category” avec une relation one-to-many (un produit appartient à une seule catégorie, mais une catégorie contient plusieurs produits).

Conclusion

Core Data simplifie la gestion des données en encapsulant les opérations de base de données. En définissant un modèle clair, en utilisant les fonctionnalités de persistance et en effectuant des requêtes optimisées, il est possible de créer des applications performantes et évolutives.