O aplicativo basicamente calcula a aceleração inserindo a velocidade e o tempo inicial e final e, em seguida, usa uma fórmula para calcular a aceleração. No entanto, como os valores nas caixas de texto são string, não consigo convertê-los em números inteiros.
@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
fonte
fonte
var answer1 = Int(txtBox1.text)
Respostas:
Idéia básica, observe que isso só funciona no Swift 1.x (confira a resposta do ParaSara para ver como ele funciona no Swift 2.x):
Atualização para Swift 4
fonte
'NSString' does not have a member named 'toInt'
. Alguma ideia?NSString
eString
são dois objetos diferentes e têm métodos diferentes.NSString
tem um método chamado.intValue
Resposta de atualização para o swift 2.0 :
toInt()
O método recebe um erro. Porque, no Swift 2.x, a.toInt()
função foi removida da String. Em substituição, o Int agora possui um inicializador que aceita uma String:fonte
"\(someInt)"
não é bomString(someInt)
é muito mais fácil de lerInt(firstText.text)!
e continuo vendo opcional. Por quê? Eu não o desembrulhei?nil
. Pode não acontecer quando a string vem de um elemento da interface do usuário como neste caso. Mas uma maneira de evitar o acidente é adicionar um valor padrão para a cadeia:let a:Int? = Int(firstText.text ?? "")
.myString.toInt()
- converte o valor da string em int.Swift 3.x
Se você tiver um número inteiro oculto dentro de uma sequência, poderá converter usando o construtor do número inteiro, assim:
Assim como outros tipos de dados (Float e Double), você também pode converter usando o NSString:
fonte
edição / atualização: Xcode 11.4 • Swift 5.2
Por favor, verifique os comentários através do código
Conteúdo do arquivo IntegerField.swift :
Você também precisará adicionar essas extensões ao seu projeto:
Conteúdo do arquivo UITextField.swift das extensões :
Conteúdo do arquivo Extensions Formatter.swift :
Conteúdo do arquivo NumberFormatter.swift das extensões :
Extensões StringProtocol.swift conteúdo do arquivo:
Projeto de exemplo
fonte
Você pode usar
NSNumberFormatter().numberFromString(yourNumberString)
. É ótimo porque retorna um opcional que você pode testarif let
para determinar se a conversão foi bem-sucedida. por exemplo.Swift 5
fonte
swift 4.0
você também pode usar a Ligação opcional, exceto a ligação forçada.
por exemplo:
fonte
// Xcode 8.1 e swift 3.0
Nós também podemos lidar com isso por Encadernação opcional, Simplesmente
fonte
No Swift 4.2 e no Xcode 10.1
fonte
Swift 3
A maneira mais simples e segura é:
Evite valores inválidos configurando o tipo de teclado como teclado numérico:
fonte
No Swift 4:
fonte
Eu criei um programa simples, onde você tem 2 campos txt, você pega o formulário do usuário e os adiciona para facilitar a compreensão, por favor, encontre o código abaixo.
espero que isto ajude.
fonte
Swift 3.0
Tente isso, você não precisa verificar nenhuma condição. Eu fiz tudo, apenas use esta função. Envie qualquer string, número, número flutuante, duplo, etc. você recebe um número como um valor ou 0 se não conseguir converter seu valor
Função:
Uso: adicione a função acima no código e converta o uso
let myNumber = getNumber(number: myString)
se omyString
número ou a string tiver retornado o número que retornar0
Exemplo 1:
Resultado:
printing number 9834
Exemplo 2:
Resultado:
printing number 9834
Exemplo 3:
Resultado:
printing number 9834
fonte
Útil para String para Int e outro tipo
Use-o como:
fonte
Sobre int () e Swift 2.x: se você receber um valor nulo após a conversão, verifique se tenta converter uma sequência com um número grande (por exemplo: 1073741824), neste caso, tente:
fonte
Swift3 mais recente este código é simplesmente para converter string para int
fonte
Como uma sequência pode conter caracteres não numéricos, você deve usar a
guard
para proteger a operação. Exemplo:fonte
Recentemente, tive o mesmo problema. A solução abaixo é um trabalho para mim:
fonte
Usa isto:
OU
Faça seu UITextField KeyboardType como DecimalTab do seu XIB ou storyboard e remova qualquer condição if para fazer qualquer cálculo, ou seja.
Como o tipo de teclado é DecimalPad, não há chance de inserir outros 0-9 ou.
Espero que esta ajuda !!
fonte
fonte
Isso funciona para mim
fonte
para Swift3.x
fonte
para solução alternativa. Você pode usar a extensão de um tipo nativo. Você pode testar com o playground.
"2" .add (1)
fonte
Minha solução é ter uma extensão geral para conversão de string para int.
fonte
fonte
Pergunta: a string "4.0000" não pode ser convertida em número inteiro usando Int ("4.000")?
Resposta: A string de verificação Int () é inteira ou não, se sim, então você fornece inteiro e, caso contrário, nulo. mas Float ou Double pode converter qualquer sequência numérica para o respectivo Float ou Double sem fornecer nada. Exemplo se você tiver uma sequência inteira "45", mas usar Float ("45") fornecer 45,0 para o valor flutuante ou usar Double ("4567") fornecer 45,0.
Solução: NSString (string: "45.000"). IntegerValue ou Int (Float ("45.000")!)! para obter o resultado correto.
fonte
Um Int no Swift contém um inicializador que aceita uma String. Retorna um Int opcional? pois a conversão poderá falhar se a sequência não contiver um número.
Usando uma instrução if let, você pode validar se a conversão foi bem-sucedida.
Portanto, seu código se torna algo assim:
fonte
Swift 5.0 e superior
Trabalhando
Caso você esteja dividindo,
String
ele cria doissubstrings
e não doisStrings
. Este abaixo método irá verificarAny
e convertê-lo t0NSNumber
é fácil converter umNSNumber
paraInt
,Float
o que nunca tipo de dados que você precisa.Código atual
Uso
Passando
String
para verificar e converter paraDouble
fonte
Swift5 float ou int string para int:
fonte
Desde o Swift 3 , eu tenho que forçar meu #% @! string & int com um "!" caso contrário, simplesmente não funciona.
Por exemplo:
fonte
var counterInt = counter.map { Int($0) }
? Ondecounter
quer que seja umString?
guard
eif let
declaraçõesConverter valor String em Inteiro no Swift 4
fonte