iOS
...
Parse Swift SDK
Data Objects

Implémentation de relations avec Parse Swift SDK sur iOS

16min

Relations

Introduction

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.

Objectif

  • Comprendre comment les relations sont mises en œuvre dans une base de données Back4App.

Prérequis

Pour compléter ce guide rapide, vous avez besoin de :

Comprendre notre application de livres

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.

Document image


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.

Référence rapide des commandes que nous allons utiliser

Nous utilisons les objets Auteur, Éditeur, ISBN et Livre:

Genre
Author
Publisher
ISBN
Book


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 :

Create
Read
Add relations
Query relations
Remaining relations


1 - Téléchargez le modèle de l'application Books

Le XCode projet a la structure suivante

Document image


À tout moment, vous pouvez accéder au projet complet via nos dépôts GitHub.

2 - Flux CRUD supplémentaire

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

Swift


Pour plus de détails sur cette étape, vous pouvez consulter le guide des opérations de base.

3 - Configurer les relations

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.

Document image


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.

4 - Mise en œuvre des relations

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,

Swift


Dans ce cas, Livre et ISBN partagent une relation 1:1Livre 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

Swift


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

Swift


5 - Interroger les relations

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

Swift


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.

Swift


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.

Swift


6 - Exécutez l'application !

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.