• 12 heures
  • Difficile

Ce cours est visible gratuitement en ligne.

course.header.alt.is_video

course.header.alt.is_certifying

J'ai tout compris !

Mis à jour le 22/03/2024

Installez Core Data

C'est parti, nous allons installer Core Data. Et comme on l'a vu dans le chapitre précédent, nous allons commencer par ajouter un fichier xcdatamodeld.

Ajoutez le fichier xcdatamodeld

Avant toute chose, nous allons créer un dossier CoreData dans notre modèle :

Nous ajoutons un dossier CoreData dans le dossier Model
CoreData

Puis, comme pour ajouter n'importe quel fichier, vous allez vous rendre dans File > New > File… Et dans la section Core Data, vous allez choisir Data Model.

Nous sélectionnons Data Model en créant un nouveau fichier
Créons un fichier Data Model

Vous cliquez sur Next. Puis vous pouvez donner un nom à votre fichier. En général, on lui donne le nom du projet, donc ici Cekikapeye. Et vous faites bien attention à le sauvegarder  dans votre nouveau dossier CoreData.

Nous nommons le fichier Cekikapeye et l’ajoutons dans le dossier CoreData
Terminons la création du fichier

Votre fichier est créé et apparaît dans le navigateur :

Notre nouvel fichier Data Model Cekikapeye s’affiche bien dans le dossier CoreData
Voilà le fichier Data Model

On a vu dans le chapitre précédent que la deuxième étape était l'instanciation de NSPersistentContainer, alors allons-y ! Nous allons donc créer une classe dédiée à son instanciation et sa gestion : la CoreDataStack.

Créez la CoreDataStack

Lorsque l’on souhaite instancier un objet une seule fois et toujours atteindre la même instance, on peut utiliser un pattern appelé le “Singleton Pattern”. Ce pattern permet donc d’avoir toujours la même instance d’un objet dans la mémoire, en atteignant une propriété static  la représentant elle-même. Voyez ci-dessous :

final class CoreDataStack {

    // MARK: - Singleton

   static let sharedInstance = CoreDataStack()

   // MARK: - Public

   var myProperty: AnyObject? // <--- Propriété exemple

}

Ainsi, si l’on souhaite atteindre une propriété de cette classe, on écrira  CoreDataStack.sharedInstance.myProperty.

Et vous pourrez donc atteindre myProperty  partout dans votre code. C’est extrêmement puissant, mais attention, ce concept doit être utilisé avec précaution. Je vous montrerai d’ailleurs plus loin comment  faire, afin de rendre un jour notre code testable.

Ajoutez la propriété persistentContainer

On va donc rajouter une propriété dans notre classe CoreDataStack, qui va nous permettre d'avoir accès partout dans le code à la propriété viewContext  de notre NSPersistentContainer.

Mais commençons par le persistentContainer  :

// MARK: - Private

private lazy var persistentContainer: NSPersistentContainer = {
  let container = NSPersistentContainer(name: "Cekikapeye")
  container.loadPersistentStores(completionHandler: { (storeDescription, error) in
    if let error = error as NSError? {
      fatalError("Unresolved error \(error), \(error.userInfo)")
    }
  })
  return container
}()

Comme dit précédemment, le persistentContainer  a pour rôle d’encapsuler l’instance de votre stack Core Data. On va donc créer à l’intérieur une propriété calculée afin de retourner la configuration voulue.

Il faut par ailleurs préciser le nom de la base que l’on souhaite instancier (dans notre cas, Cekikapeye), et potentiellement traiter une erreur de chargement. Ici nous n’irons pas plus loin qu’un méchant fatalError, mais je vous conseille grandement de traiter convenablement ce genre d’erreur dans vos applications !

Récupérez le contexte

La dernière étape, c'est de récupérer le contexte puisque, comme on l'a vu au chapitre précédent, c'est dans le contexte que nous allons manipuler les données.

Pour cela, nous allons tout simplement utiliser la propriété viewContext  de type NSManagedObjectContext  de la classe NSPersistentContainer. Cette propriété retourne un contexte à utiliser dans le Main Thread, celui dans lequel les vues sont gérées. D'où son nom.

Pour les mêmes raisons pratiques, je vous propose qu'on crée une propriété publique :

// MARK: - Public

  var viewContext: NSManagedObjectContext {
    return CoreDataStack.sharedInstance.persistentContainer.viewContext
  }

Et voilà ! On pourra utiliser notre contexte partout dans notre code en écrivant simplement  CoreDataStack.sharedInstance.viewContext.

En résumé

On suit quatre étapes pour installer Core Data :

  • On crée un fichier xcdatamodeld.

  • On crée un CoreDataStack.

  • On crée une propriété persistentContainer  dans CoreDataStack, qu'on initialise avec le nom du fichier  `xcdatamodeld`.

  • On récupère le contexte via la propriété viewContext  de NSPersistentContainer.

Dans le prochain chapitre, nous allons créer notre première entité grâce à notre fichier xcdatamodeld  !

Exemple de certificat de réussite
Exemple de certificat de réussite