La aplicación básicamente 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 en los cuadros de texto son cadenas, no puedo convertirlos a 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
ios
swift
int
uitextfield
Marwan Qasem
fuente
fuente
var answer1 = Int(txtBox1.text)
Respuestas:
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):
Actualización para Swift 4
fuente
'NSString' does not have a member named 'toInt'
. ¿Algunas ideas?NSString
yString
son dos objetos diferentes y tienen diferentes métodos.NSString
tiene un método llamado.intValue
Respuesta de actualización para swift 2.0 :
toInt()
El método recibe un error. Porque, en Swift 2.x, la.toInt()
función se eliminó de String. En reemplazo, Int ahora tiene un inicializador que acepta una cadena:fuente
"\(someInt)"
no es buenoString(someInt)
es mucho más fácil de leerInt(firstText.text)!
y aún veo opcional. ¿Por qué? ¿No lo he desenvuelto?nil
. Puede que no ocurra cuando la cadena proviene de un elemento de la interfaz de usuario como en este caso. Pero una manera de prevenir el accidente es añadir un valor por defecto de la cadena:let a:Int? = Int(firstText.text ?? "")
.myString.toInt()
- convierte el valor de la cadena en int.Swift 3.x
Si tienes un número entero escondido dentro de una cadena, puedes convertirlo usando el constructor del número entero, así:
Al igual que con otros tipos de datos (flotante y doble), también puede convertir mediante NSString:
fuente
editar / actualizar: Xcode 11.4 • Swift 5.2
Por favor revise los comentarios a través del código
Contenido del archivo IntegerField.swift :
También necesitará agregar esas extensiones a su proyecto:
Extensiones Contenido del archivo UITextField.swift :
Extensiones Contenido del archivo Formatter.swift :
Extensiones NumberFormatter.swift contenido del archivo:
Extensiones StringProtocol.swift contenido del archivo:
Proyecto de muestra
fuente
Puedes usar
NSNumberFormatter().numberFromString(yourNumberString)
. Es genial porque devuelve un opcional con el que luego puede probarif let
para determinar si la conversión fue exitosa. p.ej.Swift 5
fuente
swift 4.0
también puede usar el enlace opcional que no sea el enlace forzado.
p.ej:
fuente
// Xcode 8.1 y swift 3.0
También podemos manejarlo mediante enlace opcional, simplemente
fuente
En Swift 4.2 y Xcode 10.1
fuente
Swift 3
La forma más simple y segura es:
Evite valores no válidos configurando el tipo de teclado en el teclado numérico:
fuente
En Swift 4:
fuente
Hice un programa simple, donde tiene 2 campos txt, toma la entrada del usuario y los agrega para que sea más fácil de entender, encuentre el código a continuación.
espero que esto ayude.
fuente
Swift 3.0
Pruebe esto, no necesita verificar ninguna condición. He hecho todo, solo use esta función. Envíe cualquier cadena, número, flotante, doble, etc. obtienes un número como valor o 0 si no puede convertir tu valor
Función:
Uso: Agregue la función anterior en el código y para convertir, use
let myNumber = getNumber(number: myString)
simyString
tiene un número o una cadena, devuelve el número que devuelve0
Ejemplo 1:
Salida:
printing number 9834
Ejemplo 2
Salida:
printing number 9834
Ejemplo 3
Salida:
printing number 9834
fuente
Útil para String to Int y otro tipo
Úselo como:
fuente
Acerca de int () y Swift 2.x: si obtiene un valor nulo después de la conversión, compruebe si intenta convertir una cadena con un número grande (por ejemplo: 1073741824), en este caso intente:
fuente
El último código swift3 es simplemente convertir cadenas a int
fuente
Debido a que una cadena puede contener caracteres no numéricos, debe usar a
guard
para proteger la operación. Ejemplo:fuente
Recientemente tuve el mismo problema. La siguiente solución es trabajo para mí:
fuente
Utilizar este:
O
Haga su UITextField KeyboardType como DecimalTab desde su XIB o guión gráfico, y elimine cualquier condición para hacer cualquier cálculo, es decir.
Debido a que el tipo de teclado es DecimalPad, no hay posibilidad de ingresar otros 0-9 o.
Espero que esto ayude !!
fuente
fuente
Esto funciona para mi
fuente
para Swift3.x
fuente
para solución alternativa. Puede usar la extensión de un tipo nativo. Puedes probar con patio de recreo.
"2" .add (1)
fuente
Mi solución es tener una extensión general para la conversión de cadenas a int.
fuente
fuente
Pregunta: ¿la cadena "4.0000" no se puede convertir en entero usando Int ("4.000")?
Respuesta: La cadena de verificación Int () es entera o no si es así, entonces le da un número entero y de lo contrario es nulo. pero Float o Double pueden convertir cualquier cadena numérica a Float o Double respectivas sin dar nil. Ejemplo si tiene una cadena entera "45" pero el uso de Float ("45") le da un valor flotante de 45.0 o el uso de Double ("4567") le da 45.0.
Solución: NSString (cadena: "45.000"). IntegerValue o Int (Float ("45.000")!)! para obtener el resultado correcto
fuente
Un Int en Swift contiene un inicializador que acepta una Cadena. ¿Devuelve un Int opcional? ya que la conversión puede fallar si la cadena no contiene un número.
Al usar una declaración if let, puede validar si la conversión se realizó correctamente.
Entonces su código se convierte en algo como esto:
fuente
Swift 5.0 y superior
Trabajando
En caso de que esté dividiendo
String
, crea dossubstrings
y no dosStrings
. Este método continuación comprobaráAny
y convertirlo t0NSNumber
es fácil convertir unNSNumber
aInt
,Float
lo que sea el tipo de datos que necesita.Código actual
Uso
Pasando
String
para verificar y convertir aDouble
fuente
Swift5 float o int string a int:
fuente
A partir de swift 3 , ¡tengo que forzar mi #% @! string & int con un "!" de lo contrario, simplemente no funciona.
Por ejemplo:
fuente
var counterInt = counter.map { Int($0) }
? ¿Dóndecounter
debería estar?String?
guard
yif let
declaracionesConvertir valor de cadena a entero en Swift 4
fuente