-
Labo de groupe SwiftData
Plongez au cœur de la WWDC26 en compagnie des équipes d'ingénierie et de design Apple. Rejoignez-nous en ligne pour poser des questions, obtenir des conseils et suivre la discussion sur les principales annonces de la semaine concernant SwiftData. Séance présentée en anglais.
Chapitres
- 0:00:00 - Introduction
- 0:02:53 - Quelle est la manière appropriée d’utiliser SwiftData avec les widgets et les App Intents (par exemple, dans Raccourcis) ? Existe-t-il un exemple de code Apple illustrant cette configuration ?
- 0:04:48 - Comment les développeurs doivent-ils aborder les ensembles de données volumineux dans SwiftData ?
- 0:07:42 - Quelle est la meilleure pratique pour créer des exemples de données ? Est-ce une bonne idée de les insérer via le paramètre traits de #Preview ?
- 0:09:55 - Quand un développeur doit-il choisir ResultsObserver plutôt que @Query ? Quels sont les compromis en termes de performances, de granularité d’observation et de contrôle architectural ?
- 0:13:32 - Dans Core Data, j’utilisais NSExpression pour faire mes calculs de sommes, moyennes, minimums et maximums directement dans la base SQL. Avec SwiftData, cette fonctionnalité n’existe pas et il faut charger toutes les données en mémoire pour faire ces opérations. Que recommandez-vous ?
- 0:15:25 - Lorsque vous utilisez SwiftUI avec SwiftData, quelle est la meilleure façon de générer l’état et le modèle de la vue afin que les utilisateurs puissent renseigner les attributs non facultatifs lors de l’ajout d’un nouvel objet ?
- 0:18:53 - Pour SwiftData et CloudKit : si j’ai publié une app sans App Group ni schéma versionné, puis-je les ajouter plus tard sans perdre de données ?
- 0:21:25 - Comment l’utilisation d’un App Group pour définir le magasin local SwiftData affecte-t-elle les environnements de développement et de production CloudKit, et comment faire évoluer le schéma en toute sécurité lorsque plusieurs apps partagent ce magasin ?
- 0:23:29 - Comment gérer au mieux l’évolution du schéma en développement et en production (CloudKit) pour une app déjà publiée sur l’App Store, sachant que lancer une version de développement dans Xcode peut entraîner l’arrêt de la synchronisation de la base de données locale ou générer des doublons ?
- 0:25:33 - Quelle est la méthode la plus performante pour compter les objets SwiftData sans les charger dans les vues ?
- 0:25:47 - Dans les parties d’une app où les performances sont cruciales, j’ai récupéré manuellement les modèles dans un tableau mis en cache et j’ai géré moi-même les mises à jour au lieu d’utiliser @Query. Que pense l’équipe de ce compromis ?
- 0:30:20 - Pour SwiftData avec CloudKit, comment puis-je m’assurer que la synchronisation se produit le plus rapidement possible ? Je constate une latence importante pour l’apparition des données sur les différentes plateformes.
- 0:34:24 - Quelles sont les meilleures pratiques pour stocker des enums (y compris des enums Codable) avec des valeurs associées dans SwiftData ?
- 0:41:09 - Quelles sont les meilleures pratiques pour utiliser plusieurs contextes de modèle ? Quand faut-il répartir le travail entre différents contextes ou tout garder dans un seul ?
- 0:48:49 - Comment savoir si je dois paginer mes requêtes au lieu de récupérer tous les enregistrements d’un type ?
- 0:50:20 - Est-ce une bonne idée de combiner SwiftData avec un backend cloud comme Firestore pour la synchronisation, ou est-ce un anti-pattern ? Mon app utilise Firestore ainsi qu’un miroir local de fichiers JSON aujourd’hui.
- 0:55:12 - Quelle est la bonne méthode pour savoir si une migration de base de données est nécessaire, afin de pouvoir afficher un écran de chargement et empêcher les widgets et App Intents d’accéder au store pendant la migration ?
- 0:57:33 - Quelle est la meilleure méthode pour effectuer des requêtes groupées (regrouper les résultats selon une propriété du modèle) afin d’afficher les données par sections ?
- 0:58:38 - Comment dois-je gérer la concurrence lorsqu’un @ModelActor doit retourner des données de modèle, sachant que les types @Model ne sont pas Sendable et ne peuvent pas être transmis entre acteurs ?
Ressources
-
Rechercher dans cette vidéo…
-