swift Cómo eliminar Caracteres opcionales

¿Cómo elimino el carácter opcional?


let color = colorChoiceSegmentedControl.titleForSegmentAtIndex(colorChoiceSegmentedControl.selectedSegmentIndex) println(color) // Optional("Red") let imageURLString = "http://hahaha.com/ha.php?color=\(color)" println(imageURLString) //http://hahaha.com/ha.php?color=Optional("Red") 

Solo quiero la salida ” http://hahaha.com/ha.php?color=Red ”

¿Como lo puedo hacer?

hmm …

De hecho, cuando defines cualquier variable como opcional, entonces necesitas desenvolver ese valor opcional. Para solucionar este problema, debe declarar la variable como no opcional o poner la marca (exclamación) detrás de la variable para desenvolver el valor de la opción.

 var temp : String? // This is an optional. temp = "I am a programer" print(temp) // Optional("I am a programer") var temp1 : String! // This is not optional. temp1 = "I am a programer" print(temp1) // "I am a programer" 

Revisé esto nuevamente y estoy simplificando mi respuesta. Creo que la mayoría de las respuestas aquí están perdiendo el sentido. Por lo general, desea imprimir si su variable tiene o no un valor y también desea que su progtwig no se cuelgue si no lo hace (¡así que no lo use!). Aquí solo haz esto

  print("color: \(color ?? "")") 

Esto te dará espacio en blanco o el valor.

Debe desenvolver la opción opcional antes de intentar usarla mediante la interpolación de cadenas. La forma más segura de hacerlo es a través de un enlace opcional :

 if let color = colorChoiceSegmentedControl.titleForSegmentAtIndex(colorChoiceSegmentedControl.selectedSegmentIndex) { println(color) // "Red" let imageURLString = "http://hahaha.com/ha.php?color=\(color)" println(imageURLString) // http://hahaha.com/ha.php?color=Red } 

Verifica si no hay nil y desenvuelve con “!”:

 let color = colorChoiceSegmentedControl.titleForSegmentAtIndex(colorChoiceSegmentedControl.selectedSegmentIndex) println(color) // Optional("Red") if color != nil { println(color!) // "Red" let imageURLString = "http://hahaha.com/ha.php?color=\(color!)" println(imageURLString) //"http://hahaha.com/ha.php?color=Red" } 

En swift3 puede eliminar fácilmente opcional

 if let value = optionalvariable{ //in value you will get non optional value } 

Además de las soluciones mencionadas en otras respuestas, si desea evitar siempre ese texto opcional para todo su proyecto, puede agregar este pod:

 pod 'NoOptionalInterpolation' 

( https://github.com/T-Pham/NoOptionalInterpolation )

El pod agrega una extensión para anular el método init de interpolación de cadenas para deshacerse del texto opcional de una vez por todas. También proporciona un operador personalizado * para devolver el comportamiento predeterminado.

Asi que:

 import NoOptionalInterpolation let a: String? = "string" "\(a)" // string "\(a*)" // Optional("string") 

Consulte esta respuesta https://stackoverflow.com/a/37481627/6390582 para obtener más detalles.

Prueba esto,

 var check:String?="optional String" print(check!) //optional string. This will result in nil while unwrapping an optional value if value is not initialized or if initialized to nil. print(check) //Optional("optional string") //nil values are handled in this statement 

Vaya primero si está seguro de no tener nada en su variable.