Confirmation sur le point observable object

Bonjour
Je suis en train de suivre le cours swift UI et je me fais de petits exercices pour ma compréhension.
j ai une question class est appelée par une variable @Binding de la sous-vu pas besoin que la class soit de type observableObject ? Car c’est la variable Binding qui va mettre à jour les données de la vue principale.

On utilise le mécanisme observable object + published + StateObject que si la vue appelle directement la class pour la modification de données ?

voir mon exemple

Dans ton code, tu appelles une struct, pas une classe !
Non, le @Binding n’a rien a voir avec l’attribut observableObject. C’est juste un moyen d’agir sur le contenu d’une variable, sans rapport avec l’affichage.

La variable @Binding est un alias d’une variable de la vue principale. C’est la même variable avec un autre nom. Quand tu agis sur une variable @Binding, tu agit aussi sur la variable de la vue principale. Comme c’est une variable @State (dans ton code), l’interface est mise à jour automatiquement.

C’est le @State de la vue principale qui met à jour l’interface, pas le @Binding.

Pas besoin d’ajouter @State à l’ensemble. Une variable @Published d’une classe Observable se comporte exactement comme une @State.

On utilise une classe Observable et un @Publisher si l’interface doit être mis à jour quand le contenu de la classe change.


Tu te compliques la vie avec ton système de génération de nombre aléatoire.

Swift peut générer des nombres aléatoires d’une manière plus simple :

https://developer.apple.com/documentation/swift/int/2995648-random

Int.random(rangeInt) te rendras le vie plus simple pour ton aléatoire

@Draken « On utilise une classe observable et un @Publisher si l’interface doit être mise à jour quand le contenu de la classe change. »

Merci pour ta précision.