L'application calcule essentiellement l'accélération en saisissant la vitesse et le temps initial et final, puis utilise une formule pour calculer l'accélération. Cependant, étant donné que les valeurs dans les zones de texte sont des chaînes, je ne peux pas les convertir en entiers.
@IBOutlet var txtBox1 : UITextField
@IBOutlet var txtBox2 : UITextField
@IBOutlet var txtBox3 : UITextField
@IBOutlet var lblAnswer : UILabel
@IBAction func btn1(sender : AnyObject) {
let answer1 = "The acceleration is"
var answer2 = txtBox1
var answer3 = txtBox2
var answer4 = txtBox3
ios
swift
int
uitextfield
Marwan Qasem
la source
la source
var answer1 = Int(txtBox1.text)
Réponses:
Idée de base, notez que cela ne fonctionne que dans Swift 1.x (consultez la réponse de ParaSara pour voir comment cela fonctionne dans Swift 2.x):
Mise à jour pour Swift 4
la source
'NSString' does not have a member named 'toInt'
. Des idées?NSString
etString
sont deux objets différents et ont des méthodes différentes.NSString
a une méthode appelée.intValue
Mise à jour de la réponse pour swift 2.0 :
toInt()
la méthode reçoit une erreur. Parce que, dans Swift 2.x, la.toInt()
fonction a été supprimée de String. En remplacement, Int a maintenant un initialiseur qui accepte une chaîne:la source
"\(someInt)"
n'est pas bonString(someInt)
est beaucoup plus facile à lireInt(firstText.text)!
et puis je vois toujours facultatif. Pourquoi? Ne l'ai-je pas déballé?nil
. Peut ne pas se produire lorsque la chaîne provient d'un élément d'interface utilisateur comme dans ce cas. Mais une façon d'éviter que l'accident est d'ajouter une valeur par défaut à la chaîne:let a:Int? = Int(firstText.text ?? "")
.myString.toInt()
- convertir la valeur de chaîne en int.Swift 3.x
Si vous avez un entier caché dans une chaîne, vous pouvez convertir en utilisant le constructeur de l'entier, comme ceci:
Comme avec d'autres types de données (Float et Double), vous pouvez également convertir en utilisant NSString:
la source
modifier / mettre à jour: Xcode 11.4 • Swift 5.2
Veuillez vérifier les commentaires via le code
Contenu du fichier IntegerField.swift :
Vous devrez également ajouter ces extensions à votre projet:
Extensions du contenu du fichier UITextField.swift :
Contenu du fichier Extensions Formatter.swift :
Contenu du fichier Extensions NumberFormatter.swift :
Contenu du fichier Extensions StringProtocol.swift :
Exemple de projet
la source
Vous pouvez utiliser
NSNumberFormatter().numberFromString(yourNumberString)
. C'est génial car il renvoie une option que vous pouvez ensuite testerif let
pour déterminer si la conversion a réussi. par exemple.Swift 5
la source
rapide 4.0
vous pouvez également utiliser la liaison facultative autre que la liaison forcée.
par exemple:
la source
// Xcode 8.1 et swift 3.0
Nous pouvons également le gérer par la liaison facultative, simplement
la source
Dans Swift 4.2 et Xcode 10.1
la source
Swift 3
Le moyen le plus simple et le plus sûr est:
Évitez les valeurs non valides définissant le type de clavier sur le pavé numérique:
la source
Dans Swift 4:
la source
j'ai fait un programme simple, où vous avez 2 champs txt, vous prenez la forme de l'utilisateur et ajoutez-les pour le rendre plus simple à comprendre, veuillez trouver le code ci-dessous.
J'espère que cela t'aides.
la source
Swift 3.0
Essayez ceci, vous n'avez pas besoin de vérifier la condition. J'ai tout fait, utilisez simplement cette fonction. Envoyez n'importe quoi chaîne, nombre, float, double, etc ,. vous obtenez un nombre sous forme de valeur ou 0 s'il est incapable de convertir votre valeur
Une fonction:
Utilisation: Ajoutez la fonction ci-dessus dans le code et pour convertir l'utilisation
let myNumber = getNumber(number: myString)
si ellemyString
a un nombre ou une chaîne, elle renvoie le nombre qu'elle renvoie0
Exemple 1:
Production:
printing number 9834
Exemple 2:
Production:
printing number 9834
Exemple 3:
Production:
printing number 9834
la source
Utile pour String to Int et autre type
Utilisez-le comme:
la source
À propos de int () et Swift 2.x: si vous obtenez une valeur nulle après la conversion, vérifiez si vous essayez de convertir une chaîne avec un grand nombre (par exemple: 1073741824), dans ce cas, essayez:
la source
Dernier swift3 ce code est simplement de convertir la chaîne en int
la source
Étant donné qu'une chaîne peut contenir des caractères non numériques, vous devez utiliser un
guard
pour protéger l'opération. Exemple:la source
J'ai récemment eu le même problème. La solution ci-dessous fonctionne pour moi:
la source
Utilisez ceci:
OU
Faites votre UITextField KeyboardType comme DecimalTab de votre XIB ou storyboard, et supprimez toute condition if pour faire un calcul, c'est-à-dire.
Parce que le type de clavier est DecimalPad, il n'y a aucune chance d'entrer d'autres 0-9 ou.
J'espère que cette aide !!
la source
la source
Ça marche pour moi
la source
pour Swift3.x
la source
pour une solution alternative. Vous pouvez utiliser l'extension d'un type natif. Vous pouvez tester avec aire de jeux.
"2" .add (1)
la source
Ma solution est d'avoir une extension générale pour la conversion de chaîne en entier.
la source
la source
Question: la chaîne "4.0000" ne peut pas être convertie en entier en utilisant Int ("4.000")?
Réponse: la chaîne de vérification Int () est entière ou non si oui, alors donnez-vous un entier et sinon nul. mais Float ou Double peut convertir n'importe quelle chaîne numérique en Float ou Double respectif sans donner nil. Exemple si vous avez une chaîne entière "45" mais que l'utilisation de Float ("45") vous donne une valeur flottante de 45,0 ou l'utilisation de Double ("4567") vous donne 45,0.
Solution: NSString (chaîne: "45.000"). IntegerValue ou Int (Float ("45.000")!)! pour obtenir un résultat correct.
la source
Un Int dans Swift contient un initialiseur qui accepte une chaîne. Il retourne un Int? Facultatif car la conversion peut échouer si la chaîne ne contient pas de nombre.
En utilisant une instruction if let, vous pouvez valider si la conversion a réussi.
Donc, votre code devient quelque chose comme ceci:
la source
Swift 5.0 et supérieur
Travail
Dans le cas où vous divisez le,
String
il en crée deuxsubstrings
et non deuxStrings
. Cette méthode ci-dessous va vérifierAny
et le convertir enNSNumber
son facile à convertirNSNumber
enInt
,Float
quel que soit le type de données dont vous avez besoin.Code réel
Usage
Passer
String
pour vérifier et convertir enDouble
la source
Swift5 float ou int string to int:
la source
Depuis swift 3 , je dois forcer mon #% @! string & int avec un "!" sinon ça ne marche pas.
Par exemple:
la source
var counterInt = counter.map { Int($0) }
? Oùcounter
serait unString?
guard
et lesif let
déclarationsConvertir une valeur de chaîne en entier dans Swift 4
la source