Formatage TextField

Bonjour à tous

J’ai un TextField ou je rentre un poids
ex: 70 , 70.1

j’aimerai dans tous les cas retourner 70.00 et 70.10
merci pour vos idées

depuis j’ai trouvé si çà peut servir à quelqu’un

@Binding var editedText: String

var body: some View {
    TextField(title, text: $editedText, onCommit: {
        // Formatage des données ajoute .00
        let val = Double(self.editedText) ??  0
        let valString = String(format: "%.2f", val as CVarArg)
        self.editedText = valString
    })

Je comprends pas très bien cette partie là, à quoi est ce que ça correspond ?

a vrai dire moi non plus
c’est swift qui me l’a ajouté

Perso j’ai trouvé cette méthode, assez simple :
Remplacer $editedText par Binding(get:set:)

   var body: some View {
        TextField(title, text: Binding(
                                       get: { self.editedText },
                                       set: { (newValue) in
            // Formatage des données ajoute .00
            let val = Double(self.newValue) ??  0
            let valString = String(format: "%.2f", val as CVarArg)
            self.editedText = valString }))

D’un point de vue architecture de l’application, je ne vois pas l’interêt de stocker la taille dans une chaîne de caractères. Que la saisie se fasse dans une chaîne, d’accord, puisque tu utilises un TextField. Mais ensuite ? La convertir en Double, ok. Mais ensuite la reconvertir en String formatée ??

Et si tu as besoin de faire des calculs ensuite, tu vas le reconvertir en valeur numérique, puis encore en chaîne ?

La responsabilité de formater les données est du devoir des fonctions d’affichage, pas du système de saisie.

Moi j’aurai écris une fonction pour saisir la taille dans un Double, et une autre pour afficher la valeur en la formatant avec 2 chiffres après la virgule, quand c’est nécessaire.

(Sans parler des problèmes de localisation. Les anglo-saxons utilisant une virgule et non un point. D’où l’intérêt de séparer le formatage des données du stockage dans la partie métier des applications)

c’est vrai que je l’ai fait pour des problèmes d’affichage
j’aurai bien aimé faire çà en MVVM mais pas encore assez au point