Conversión de cadena a Int con Swift

Resuelto Marwan Qasem asked hace 10 años • 31 respuestas

Básicamente, la aplicación calcula la aceleración ingresando la velocidad y el tiempo inicial y final y luego usa una fórmula para calcular la aceleración. Sin embargo, dado que los valores de los cuadros de texto son cadenas, no puedo convertirlos a números enteros.

@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
Marwan Qasem avatar Jun 09 '14 13:06 Marwan Qasem
Aceptado

Respuesta actualizada para Swift 2.0+ :

toInt()El método da un error, ya que se eliminó Stringen Swift 2.x. En cambio, el Inttipo ahora tiene un inicializador que acepta String:

let a: Int? = Int(firstTextField.text)
let b: Int? = Int(secondTextField.text)

Idea básica, tenga en cuenta que esto solo funciona en Swift 1.x (consulte la respuesta de ParaSara para ver cómo funciona en Swift 2.x):

    // toInt returns optional that's why we used a:Int?
    let a:Int? = firstText.text.toInt() // firstText is UITextField
    let b:Int? = secondText.text.toInt() // secondText is UITextField

    // check a and b before unwrapping using !
    if a && b {
        var ans = a! + b!
        answerLabel.text = "Answer is \(ans)" // answerLabel ie UILabel
    } else {
        answerLabel.text = "Input values are not numeric"
    }

Actualización para Swift 4

...
let a:Int? = Int(firstText.text) // firstText is UITextField
let b:Int? = Int(secondText.text) // secondText is UITextField
...
Narendar Singh Saini avatar Jun 12 '2014 11:06 Narendar Singh Saini