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.
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.
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 :
« How Core Data Saves Data in SQLite ». Fatbobman's blog. https://fatbobman.com/en/posts/tables_and_fields_of_coredata/
▼Publicité