Fermer

février 27, 2024

Plonger dans Swift Data : une approche moderne de la persistance iOS

Plonger dans Swift Data : une approche moderne de la persistance iOS


Introduction

Swift Data est un outil puissant de gestion des données dans les applications Swift, offrant une alternative rationalisée à Core Data. Conçu pour simplifier la persistance des données, Swift Data devient particulièrement utile lorsque la complexité de Core Data semble difficile à gérer. L’un de ses avantages notables est sa simplicité ; il fournit une syntaxe plus simple et est plus facile à configurer que Core Data.

Swift Data est compatible avec les applications UIKit (basées sur Storyboard) et SwiftUI. Cette flexibilité nous permet d’intégrer de manière transparente Swift Data dans nos projets existants, que nous utilisions l’approche UIKit traditionnelle avec les Storyboards ou que nous adoptions le framework SwiftUI moderne.

Ce que nous apprendrons dans ce blog

  • Configuration de Swift Data pour la persistance des données dans les applications SwiftUI
  • Effectuer des opérations CRUD de manière transparente avec Swift Data
  • Présentation des propriétés d’attribut, des relations et des prédicats
  • Gestion des tâches simultanées et du multithreading pour un fonctionnement plus fluide dans les applications SwiftUI

Configuration et Opérations CRUD

Définir le modèle: Définissons notre modèle de données avant de plonger dans la configuration.
À des fins de démonstration, créons un modèle nommé « Utilisateur » avec deux propriétés : identifiant et codeemployé (une combinaison de 2 alphabets aléatoires et de 4 chiffres). Nous avons utilisé une classe pour notre modèle puisque la macro @Model est spécifiquement conçue pour la conformité de classe.

Configuration du conteneur de modèle et de l’environnement : Passons maintenant à la configuration du Conteneur modèle— un élément crucial pour la gestion de nos données. Le conteneur de modèles fait office de référentiel central pour nos éléments de données.

Dans notre exemple d’application, nous initialisons un ModelContainer en définissant un schéma contenant un seul modèle, ‘Utilisateur.soi’ . Cette approche centrée sur le modèle s’aligne sur la simplicité de Swift Data. La configuration du modèle garantit un stockage persistant et toute erreur lors de la configuration déclenche une erreur fatale nécessitant une attention immédiate. De plus, nous avons ajouté ‘Article.soi‘ pour démontrer comment nous pouvons intégrer plusieurs modèles dans le schéma, permettant une flexibilité dans notre approche de gestion des données. Veuillez ignorer ceci pour l’instant, il est ajouté ici uniquement à des fins de démonstration.

Nous devons introduire un objet d’environnement pour le contexte de données afin de compléter notre configuration Swift Data. Cela facilitera une interaction transparente des données dans nos vues SwiftUI.

Ainsi, dans notre ContentView, nous initialisons notre environnement de données avec les lignes suivantes :

Ici, ‘@Environnement(\.modelContext)’ donne accès au contexte SwiftData dans SwiftUI, permettant une manipulation pratique des données. Le ‘@Requête’ Le wrapper de propriétés est utilisé pour récupérer et observer automatiquement les modifications apportées à la collection d’entités utilisateur, améliorant ainsi la réactivité de notre vue.

La fonctionnalité principale affiche une liste d’utilisateurs, chacun représenté par un NavigationLink. Les détails de l’utilisateur, y compris le code de l’employé et l’horodatage de création, sont affichés dans un format ‘VSpile.’

Le surSupprimer Le modificateur permet aux utilisateurs de supprimer des entrées, en appelant le ‘Supprimer l’utilisateur’ fonction.
L’ajout d’un nouvel utilisateur s’effectue via le ‘ajouter un utilisateur’ fonction. Cette fonction utilise le ‘modèleContext’ pour insérer une nouvelle instance d’utilisateur avec un horodatage.

En résumé, ce code montre un moyen simple mais efficace d’utiliser SwiftUI. Les utilisateurs peuvent facilement ajouter ou supprimer des entrées en appuyant sur le bouton « + ». Lorsque nous appuyons dessus, une nouvelle ligne apparaît avec un code d’employé unique et l’heure actuelle.

Lorsque nous exécuterons ce code, nous verrons dans quelle mesure SwiftData gère les opérations de création, de récupération, de mise à jour et de suppression (CRUD). Les utilisateurs peuvent facilement ajouter ou supprimer des données, et lorsqu’ils redémarrent l’application, elle affiche automatiquement les dernières informations, ce qui rend l’application dynamique et réactive.

Définir des attributs et des relations: Nous comprenons maintenant que SwiftData nous permet de continuer à utiliser Swift tout au long du processus. Nous créerons nos modèles en utilisant uniquement le code Swift, et avec une seule commande, ils deviendront des objets puissants qui fonctionneront parfaitement avec SwiftData. De cette façon, nous n’avons pas besoin d’utiliser l’interface utilisateur de CoreData pour le modèle de données, puis d’utiliser la classe Swift que nous avons créée pour le modèle.

Par exemple, nous pouvons également établir une relation entre deux objets ou les spécifier comme étant uniques avec le @Attributpropriété,

Ici, @Attribut (unique) garantit que chaque utilisateur dispose d’un code d’employé unique, évitant ainsi les doublons. @Relation(.cascade) L’attribut indique une relation entre des entités. L’option .cascade signifie généralement que les modifications apportées à un côté de la relation (dans ce cas, l’objet User) seront automatiquement reflétées de l’autre côté (l’objet UserProfile associé). Par exemple, le profil utilisateur associé peut également être supprimé si nous supprimons un utilisateur.

Comprendre les prédicats: Si nous parlons de #Prédicat, il fournit une manière concise et expressive de définir les conditions de filtrage des objets du modèle. Il permet la création de requêtes dynamiques et complexes, améliorant ainsi la flexibilité de la récupération des données.

Dans cet exemple, il filtre les utilisateurs dont les codes d’employé contiennent « A » et ont un horodatage supérieur à la date actuelle. Utilisateurs filtrés tableau est ensuite obtenu en appliquant le prédicat défini à la collection de utilisateurs.

Concurrence et multithreading

Pour que notre application continue de fonctionner correctement, en particulier lorsque nous traitons de nombreuses données, nous devons gérer intelligemment les tâches exécutées simultanément, comme la sauvegarde de données ou la récupération d’informations. Swift Data nous aide à y parvenir grâce à la concurrence et au multithreading.

Gestion des tâches en arrière-plan: Lorsque nous avons des tâches importantes comme traiter des données ou récupérer beaucoup d’informations, nous ne voulons pas empêcher l’application de faire autre chose. Nous pouvons effectuer ces tâches en arrière-plan afin que l’application reste réactive. C’est comme si quelqu’un d’autre faisait le travail pendant que nous nous concentrions sur autre chose.

Dans cet exemple, nous utilisons ‘.effectuer()‘ sur un contexte spécifiquement créé pour les tâches en arrière-plan. Cela nous permet d’effectuer des travaux lourds de manière asynchrone, garantissant que notre application reste réactive et ne soit pas bloquée par des opérations gourmandes en ressources.

Assurer la sécurité des choses dans les discussions : Lorsque différentes parties de l’application font des choses simultanément, nous devons nous assurer qu’elles ne se gâchent pas. Nous utilisons des techniques spéciales pour garantir que tout reste organisé et sécurisé, par exemple en nous assurant qu’une seule chose peut modifier les données à la fois.

Ici, ‘effectuerEtattendre’ garantit que nos changements se produisent dans le bon ordre et n’entrent pas en conflit avec d’autres changements se produisant simultanément. Cela protège nos données et évite les conflits.

Gérer les changements provenant de différents endroits : Parfois, différentes parties de l’application modifient la même chose en même temps. Nous devons nous assurer que ces modifications ne provoquent pas de problèmes tels que la perte de données. Nous disposons donc de moyens de gérer ces situations avec soin pour que tout se passe bien.

En utilisant ces astuces simples pour la concurrence et le multithreading dans Swift Data, nos applications SwiftUI peuvent rester rapides et réactives, offrant ainsi aux utilisateurs une expérience exceptionnelle.

Conclusion

En conclusion, Swift Data ouvre la porte à une expérience de développement iOS plus simple et plus flexible. Continuez à explorer ses fonctionnalités, découvrez de nouvelles façons d’affiner facilement les données et tirez parti de sa simplicité pour créer des applications dynamiques et réactives.

Continuez à coder et à libérer tout le potentiel de SwiftData. Consultez nos autres articles de blog pour plus d’informations.






Source link