entero - Convertir carácter a Int en Swift 2.0
swift 4.2 string to int (3)
Este es un truco de improvisación que se me ocurrió. Dado que puede ser complicado convertir Character
en Int
, pero puede convertir fácilmente String
en Int
haga esto:
fileLines = Int(String(i))!
por supuesto, esto no está muy bien optimizado, pero para casos como el suyo puede hacer el truco.
Solo quiero convertir un personaje en Int .
Esto debería ser simple. Pero no he encontrado útiles las respuestas anteriores. Siempre hay algún error. Tal vez es porque lo estoy probando en Swift 2.0.
for i in (unsolved.characters) {
fileLines += String(i).toInt()
print(i)
}
Actualmente. Una forma más simple es convertir String to Int en Swift 2.o es:
let chars = Int(chars)
No estoy seguro de si esto es lo que está intentando ... Pero puede aplicar esto fácilmente a su ciclo, por supuesto.
En Swift 2.0, toInt()
, etc., han sido reemplazados por inicializadores. (En este caso, Int(someString)
.)
Debido a que no todas las cadenas se pueden convertir a ints, este inicializador no está disponible , lo que significa que devuelve un int ( Int?
) Opcional en lugar de solo un Int
. Lo mejor que puedes hacer es desenvolver este opcional usando if let
.
No estoy seguro exactamente de lo que está buscando, pero este código funciona en Swift 2 y logra lo que creo que está tratando de hacer:
let unsolved = "123abc"
var fileLines = [Int]()
for i in unsolved.characters {
let someString = String(i)
if let someInt = Int(someString) {
fileLines += [someInt]
}
print(i)
}
O bien, para una solución Swiftier:
let unsolved = "123abc"
let fileLines = unsolved.characters.filter({ Int(String($0)) != nil }).map({ Int(String($0))! })
// fileLines = [1, 2, 3]
Puedes acortar esto más con flatMap
:
let fileLines = unsolved.characters.flatMap { Int(String($0)) }
flatMap
devuelve "una Array
contiene los resultados no nulos de mapeo de transform
sobre self
" ... por lo que cuando Int(String($0))
es nil
, el resultado se descarta.