Então eu posso fazer isso:
var stringNumb: NSString = "1357"
var someNumb: CInt = stringNumb.intValue
Mas não consigo encontrar a maneira de fazê-lo c / a String
. Eu gostaria de fazer algo como:
var stringNumb: String = "1357"
var someNumb: Int = Int(stringNumb)
Isso também não funciona:
var someNumbAlt: Int = myString.integerValue
var someNumb: Int? = Int(stringNumb)
ouvar someNumb = Int(stringNumb)
Respostas:
Swift 2.0, você pode inicializar Inteiro usando o construtor
fonte
toInt()
método como parte deleString
. Portanto, esseInt
construtor é agora a única maneira de converter seqüências de caracteres em ints.Eu usaria:
Nota
toInt()
:fonte
var someNumb: Int = stringNumber.toInt()!
como @NateCook apontou!
na chamada, você pode declarar seu variável como opcional:someNumb: Int? = stringNumber.toInt()
. Em seguida, o sistema de segurança de tipo estará ciente de quefoo
pode não existir. É!
claro que a colocação falhará se sua string não puder ser convertida em um número.No Swift 3.0
Tipo 1: Converter NSString em String
Tipo 2: Se a String tiver apenas Inteiro
Tipo 3: se a cadeia tiver valor flutuante
fonte
stringToFloat
is!= nil
, você deve usarif let
.O método que você deseja é
toInt()
- você deve ter um pouco de cuidado, poistoInt()
retorna um Int opcional.fonte
toInt()
é o caminho certo para fazê-lo. opcionais são uma parte essencial da línguaSe você é capaz de usar
NSString
apenas um .É bem parecido com o objetivo-c. Todo o tipo de dados existe, mas requer a
as NSString
adiçãoTambém temos uma
toInt()
função adicionada. Consulte a Apple Inc. "A linguagem de programação Swift". iBooks. https://itun.es/us/jEUH0.l página 49fonte
as NSString
. fixa-lo @gwcoffeya resposta acima não me ajudou, pois meu valor de string era "700,00"
com Swift 2.2 isso funciona para mim
Passei myInt para NSFormatterClass
Graças a esta postagem no blog.
fonte
Double()
da mesma maneira que estamos usandoInt()
. Não há necessidade de usar a ponte para NSString.Double()
e usarInt()
. Assim:if let d = Double("700.00") { let i = Int(d); print (i) }
:)Você pode fazer a ponte de String para NSString e converter de CInt para Int assim:
fonte
Eu escrevi uma extensão para esse fim. Sempre retorna um
Int
. Se a sequência não couber em umInt
, é retornado 0.fonte
return self.toInt() ?? 0
. Provavelmente é melhor simplesmente escrever dessa maneira em linha do que ter um método de extensão para isso.Uma solução mais geral pode ser uma extensão
isso, por exemplo, estende o objeto String nativo rápido por toFloat
fonte
Converter String em Int no Swift 2.0:
usar
.intergerValue or intValue for Int32
fonte
Probabilidades 8: 1 (*)
ou
Int(String)
retorna um opcionalInt?
, não umInt
.Uso seguro: não desembrulhe explicitamente
ou
(*) Nenhuma das respostas realmente abordou por que
var someNumb: Int = Int(stringNumb)
não estava funcionando.fonte
Maneira simples, mas suja
O caminho da extensão
Isso é melhor, realmente, porque funcionará bem com códigos de idioma e decimais.
Agora você pode simplesmente fazer:
fonte