Convertir UITextfiel en chiffre pour un calcul (swift)

paranormal-wizzzard

Membre expert
26 Août 2013
1 286
75
RENNES
Bonjour,

Je suis entrain de créer ma première application iPhone.
Elle permettra de faire des calculs de dosages pour les liquides de cigarettes électroniques...

J'ai presque fini, mais je bloque sur un truc.
Je dois convertir une donnée UITextfield dans le but de pouvoir l'intégrer à un calcul, sinon xCode me dit :
Cannot invoke initializer for type 'Double' with an argument list of type '(UITextField)'

Voici :
Bloc de code:
let mlArome = (Double(liquidetotalText!)!/100) * Double(pourcentagearomeText!)!
(en gros les mL d'arôme sont égaux à la N% de la quantité de liquide totale)

Auriez-vous une astuce pour convertir UITextfield ou bien écrire cette formule différemment ?

PS : je mets Double sachant qu'il peut y avoir des décimales suivant ce que rentre l'utilisateur...
 
Double() ne sait pas convertir directement depuis un UITextField, mais depuis une chaine, si.
Il suffit juste d'utiliser .text sur le UITextField.

Bloc de code:
let mlArome = (Double(liquidetotalText.text!)!/100) * Double(pourcentagearomeText.text!)!


Bon, idéalement, faut d'abord vérifier que le champ saisi par l'utilisateur est bien convertisable en Double avant tout :

Bloc de code:
guard let liquidetotal = Double(liquidetotalText.text!) else {
   print("Not a valid number: \(liquidetotalText.text!)")
   return
}
guard let pourcentagearome= Double(pourcentagearomeText.text!) else {
   print("Not a valid number: \(pourcentagearomeText.text!)")
   return
}

let mlArome = liquidetotale*pourcentagearome/100!
 
Dernière édition:
J'ai beau essayer d'écrire d'une manière où d'une autre je n'y arrive pas GRRRR
Il y a toujours un soucis, soit un mélange entre UITextfield et Int, soit un mélange entre Double et Int...
Je sais plus quoi faire...
Voici mon code :
Capture d’écran 2018-08-01 à 15.07.14.png
 
problème résolu ?

il faut convertir tout en "type Double" puis faire le calcul.
il faut aussi penser à bloquer le clavier pour entrer uniquement des chiffres
et pour récupérer une valeur d'un textfield c'est : UITextField.text
 
Oui problème résolu en créant un fonction qui dit que ces données sont toutes des doubles.
Par contre pour bloquer le clavier en chiffre, je ne vois pas cette option dans le menu déroulant (il y a uniquement date...)
Pour récupérer la valeur maintenant c'est bon aussi de cette manière :
Bloc de code:
(mlDeTrucText.text!)!