rápido ¿Cómo lanzar desde Int? Encadenar

Resuelto Sonrobby asked hace 9 años • 12 respuestas

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???
}
Sonrobby avatar Feb 03 '15 10:02 Sonrobby
Aceptado

Puede utilizar la interpolación de cadenas.

let x = 100
let str = "\(x)"

si xes opcional puedes usaroptional binding

var str = ""
if let v = x {
   str = "\(v)"
}
println(str)

Si estás seguro de que eso xnunca sucederá nil, puedes hacer un forced unwrappingen 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 ?? ""
rakeshbs avatar Feb 03 '2015 03:02 rakeshbs

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
Antoine avatar Jun 18 '2015 13:06 Antoine