Comment supprimer le caractère facultatif
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")
Je veux juste une sortie " http://hahaha.com/ha.php?color=Red "
Comment puis-je faire?
hmm ....
En fait, lorsque vous définissez une variable comme une variable facultative, vous devez décompresser cette valeur facultative. Pour résoudre ce problème, vous devez soit déclarer la variable comme non-option, soit mettre un point (exclamation) derrière la variable pour décompresser la valeur de l'option.
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"
J'ai regardé cela de nouveau et je simplifie ma réponse. Je pense que la plupart des réponses ici manquent le point. Vous voulez généralement imprimer si votre variable a ou non une valeur et vous voulez aussi que votre programme ne se bloque pas s'il ne le fait pas (alors n'utilisez pas!). Voici juste ceci
print("color: \(color ?? "")")
Cela vous donnera vide ou la valeur.
Vous devez déballer les éléments facultatifs avant d'essayer de les utiliser via une interpolation de chaîne. Le moyen le plus sûr de le faire est via reliure optionnelle :
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
}
Vérifiez qu'il n'y en a pas et décompressez avec "!":
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"
}
Dans Swift3
vous pouvez facilement supprimer facultatif
if let value = optionalvariable{
//in value you will get non optional value
}
Outre les solutions mentionnées dans d'autres réponses, si vous souhaitez toujours éviter ce texte facultatif pour l'ensemble de votre projet, vous pouvez ajouter ce module:
pod 'NoOptionalInterpolation'
( https://github.com/T-Pham/NoOptionalInterpolation )
Le pod ajoute une extension pour redéfinir la méthode init d'interpolation de chaîne afin de supprimer le texte facultatif une fois pour toutes. Il fournit également un opérateur personnalisé * pour rétablir le comportement par défaut.
Alors:
import NoOptionalInterpolation
let a: String? = "string"
"\(a)" // string
"\(a*)" // Optional("string")
Veuillez consulter cette réponse https://stackoverflow.com/a/37481627/6390582 pour plus de détails.
Essaye ça,
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
Allez-y en premier si vous êtes sûr de ne rien avoir dans votre variable.