Formation PUB900 : Développer une application pour iPhone avec SwiftUI, H-2024 SwiftData

37.3 Structure d'une base de données SwiftData


Lorsqu'on définit un ou plusieurs modèles décorés avec la macro @Model, SwiftData se charge automatiquement de créer une table pour chacun des modèles.

Par défaut, il crée ces tables dans une base de données SQLite nommée default.store (en fait, la BD est composée de trois fichiers). La base de données est enregistrée dans le dossier Application Support du Data Container.

Lorsque l'application est lancée dans le simulateur, on peut retrouver le chemin précis de la base de données à l'aide d'une des techniques présentées sur la fiche « Retrouver un fichier dans le simulateur ».

Le contenu de la base de données est à première vue assez différent de ce que nous avons l'habitude de voir. Plusieurs tables et champs ont été créés en plus de ceux définis par le modèle.

Remarquez que SwiftData se charge de créer les clés étrangères requises mais il ne crée pas de contraintes d'intégrité référentielle dans la base de données car il gère lui-même l'intégrité des données via son modèle objet.

Dans cette fiche, j'ai utilisé DbGate pour visualiser le contenu de la base de données.

Tables créées par SwiftData

Le nom des tables correspondant aux modèles débute par Z et ne contient pas de barre de soulignement. On voit ici qu'il s'agit des tables ZCATEGORIE et ZITEM.

Table Categorie

Table Item

Les champs de ces tables sont également différents de ce qui a été défini par le modèle.

Les champs en provenance du modèle débutent par Z sans barre de soulignement.

Parmi les autres champs, notons :

  • Le champ Z_PK est la clé primaire.
  • Le champ Z_ENT fait référence à l'identifiant de la table que l'on retrouve dans Z_PRIMARYKEY.
  • Le champ Z_OPT indique le nombre de modifications qui ont été apportées aux données de l'enregistrement.

Pour plus d'information

« How Core Data Saves Data in SQLite ». Fatbobman's blog. https://fatbobman.com/en/posts/tables_and_fields_of_coredata/

▼Publicité

Veuillez noter que le contenu de cette fiche vous est partagé à titre gracieux, au meilleur de mes connaissances et sans aucune garantie.
Merci de partager !
Soumettre