Implémentation de relations avec Parse Swift SDK sur iOS
Les relations sont une caractéristique fondamentale pour organiser les objets de données stockés dans une base de données. ParseSwift fournit les outils et méthodes nécessaires pour établir des relations entre les classes dans votre base de données Back4App. En fonction du cas d'utilisation, nous pouvons identifier les types de relations suivants
- 1:1: Une relation qui ne connecte que deux objets de données.
- 1:N: Une relation entre un objet de données etN objets de données
- N:N: Une relation entreN objets de données àN objets de données.
Comme nous le verrons ci-dessous, la mise en œuvre des relations 1:1 est relativement simple. Pour les relations 1:N et N:N , la mise en œuvre implique l'objet ParseRelation fourni par le ParseSwift SDK. Il existe des alternatives supplémentaires pour mettre en œuvre les relations 1:N et N:N. Cependant, en raison de l'efficacité et des performances, nous recommandons de suivre notre approche
Ce tutoriel utilise une application de base créée dans Xcode 12 et iOS 14.
À tout moment, vous pouvez accéder au projet complet via nos dépôts GitHub.
- Comprendre comment les relations sont mises en œuvre dans une base de données Back4App.
Pour compléter ce guide rapide, vous avez besoin de :
- Xcode.
- Une application créée sur Back4App.
- Suivez le tutoriel sur la nouvelle application Parse pour apprendre à créer une application Parse sur Back4App.
- Remarque : Suivez le tutoriel d'installation du SDK Parse (Swift) pour créer un projet Xcode connecté à Back4App.
Le modèle de projet est une application de livres où l'utilisateur saisit les détails d'un livre pour l'enregistrer dans une base de données Back4App. Sur l'écran d'accueil de l'application, vous trouverez le formulaire pour le faire.

En utilisant le + bouton situé en haut à droite de la barre de navigation, nous pouvons ajouter autant de Éditeurs, Genres et Auteurs que nécessaire. Une fois que l'utilisateur a saisi un livre, il peut utiliser le Ajouter un livre bouton pour enregistrer le livre dans sa base de données Back4App. De plus, le Lister les livres bouton nous permettra d'afficher tous les livres que l'utilisateur a ajoutés et également de voir leur relation avec les éditeurs et les auteurs.
Nous utilisons les objets Auteur, Éditeur, ISBN et Livre:
Avant de stocker des instances de ces objets dans une base de données Back4App, toutes leurs propriétés doivent se conformer aux Codable et Hashable protocoles.
Nous utilisons les méthodes suivantes pour gérer ces objets sur la base de données Back4App :
Le XCode projet a la structure suivante

À tout moment, vous pouvez accéder au projet complet via nos dépôts GitHub.
Avant d'aller plus loin, il est nécessaire d'implémenter quelques fonctions CRUD pour pouvoir sauvegarder les Auteurs, Éditeurs et Genres objets. Dans leMainController+ParseSwift.swift fichier, sous une extension pour la MainController classe, nous avons implémenté les méthodes suivantes
Pour plus de détails sur cette étape, vous pouvez consulter le guide des opérations de base.
Avant de commencer à créer des relations, jetez un œil à la référence rapide section pour avoir une idée des objets que nous voulons relier entre eux. Dans la figure ci-dessous, nous montrons comment ces objets sont liés.

Comme on peut le voir, les relations sont créées en plaçant l'objet Livre au milieu. Les flèches montrent comment chaque objet est lié à un Livre.
Cas 1:1
Ajouter des relations 1:1 peut être facilement réalisé en ajoutant une propriété dans l'objet Livre, c'est-à-dire,
Dans ce cas, Livre et ISBN partagent une relation 1:1 où Livre est identifié comme le parent et ISBN comme l'enfant. En interne, lorsque Back4App enregistre une instance de Livre, il enregistre d'abord l'objet ISBN (sous le nom de classe ISBN). Une fois ce processus terminé, Back4App continue avec l'objet Livre. Le nouvel objet Livre est enregistré de manière à ce que sa isbn soit représentée par un Pointer<ISBN> objet. Un Pointer<> permet de stocker une instance unique de l'objet ISBN liée à son parent correspondant.
Cas 1:N
Pour 1:N relations, la manière la plus efficace de les implémenter est via un ParseRelation<Book> objet. ParseSwift fournit un ensemble de méthodes pour ajouter ces types de relations pour tout objet conforme au ParseObject protocole. Par exemple, si nous voulons créer une 1:N relation entre Book et Author nous pouvons utiliser
Il est simple d'adapter ce extrait pour les autres relations que nous avons pour Livre.
- Mettre le tout ensemble
Une fois que nous avons établi l'idée de base pour implémenter les relations, nous complétons maintenant le saveBook() méthode. Nous énumérons les points clés à garder à l'esprit pendant ce processus
Pour 1:1 relations, étant donné le parent Book et son enfant ISBN, nous interrogeons l'enfant correspondant en l'incluant dans la Book requête
Avec cela, tous les livres de la query auront également la isbn propriété correctement définie avec l'objet ISBN associé.
D'autre part, afin de récupérer des objets avec une 1:N relation, le ParseObject protocole fournit la méthode statique queryRelation(_,parent:). En fournissant le nom de la relation (comme premier paramètre) et le parent, cette méthode nous permet de créer la requête requise. Par exemple, pour récupérer tous les Author liés à un Book spécifique, nous pouvons utiliser le snippet suivant.
De même, nous pouvons interroger d'autres objets connexes tels que Publisher.
Dans le BookDetailsController.swift fichier, nous implémentons ces requêtes pour afficher la relation qu'un livre a avec les auteurs et les éditeurs.
Avant d'appuyer sur le bouton exécuter sur XCode, n'oubliez pas de configurer votre Back4App application dans la AppDelegate classe!
Vous devez ajouter quelques Genre’s, Publisher’s et Author’s avant d'ajouter un nouveau livre. Ensuite, vous pouvez commencer à entrer les informations d'un livre pour les enregistrer dans votre base de données Back4App. Une fois que vous avez enregistré un livre, ouvrez votre tableau de bord Back4App et allez à votre application liée au XCode projet. Dans la section Base de données, vous trouverez la classe Book où tous les livres créés par l' iOS App sont stockés.
De plus, vous pouvez voir que Back4App a automatiquement créé la classe ISBN afin de la relier à son Book correspondant. Si vous revenez à la classe Book , vous pouvez identifier les types de données pour chaque type de relation. Dans le cas de ISBN et Genre, le type de données est un Pointer<>. D'autre part, pour des relations comme Author et Publisher, le type de données est Relation<>. C'est une différence clé à garder à l'esprit lors de la construction des relations.