rápido ¿Cómo lanzar desde Int? Encadenar
En Swift, no puedo convertir Int a String mediante:
var iString:Int = 100
var strString = String(iString)
¿Pero mi variable en Int? , ahí por error:Cant invoke 'init' with type '@Ivalue Int?'
Ejemplo
let myString : String = "42"
let x : Int? = myString.toInt()
if (x != null) {
// Successfully converted String to Int
//And how do can i convert x to string???
}
Aceptado
Puede utilizar la interpolación de cadenas.
let x = 100
let str = "\(x)"
si x
es opcional puedes usaroptional binding
var str = ""
if let v = x {
str = "\(v)"
}
println(str)
Si estás seguro de que eso x
nunca sucederá nil
, puedes hacer un forced unwrapping
en un optional value
.
var str = "\(x!)"
En una sola declaración puedes probar esto.
let str = x != nil ? "\(x!)" : ""
Según el comentario de @RealMae, puedes acortar aún más este código usando elnil coalescing operator (??)
let str = x ?? ""
Me gusta crear pequeñas extensiones para esto:
extension Int {
var stringValue:String {
return "\(self)"
}
}
Esto hace posible llamar a entradas opcionales, sin tener que desenvolver y pensar en valores nulos:
var string = optionalInt?.stringValue