swift如何删除可选的string字符

如何删除可选字符


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") 

我只是想输出“ http://hahaha.com/ha.php?color=Red ”

我能怎么做?

嗯….

实际上,当你将任何variables定义为可选时,你需要解开这个可选的值。 要解决这个问题,要么你必须声明variables为非选项,或者把!(感叹号)标记放在variables的后面以解开选项值。

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

在尝试通过string插值使用它之前,您需要打开可选项。 最安全的方法是通过可选的绑定 :

 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 } 

我又看了一遍,我正在简化我的答案。 我想这里的答案大部分都没有提到。 你通常要打印你的variables是否有一个值,而且你也希望你的程序不会崩溃,如果没有(所以不要使用!)。 这里只是做这个

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

这会给你空白或价值。

检查零和解包使用“!”:

 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" } 

swift3您可以轻松删除可选项

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

除了其他答案中提到的解决scheme之外,如果您想要始终避免整个项目的可选文本,则可以添加此窗格:

 pod 'NoOptionalInterpolation' 

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

该pod添加了一个扩展来覆盖string插入init方法,以摆脱一次所有的可选文本。 它还提供了一个自定义的操作符*来恢复默认行为。

所以:

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

请参阅此答案https://stackoverflow.com/a/37481627/6390582了解更多详情。;

尝试这个,

 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 

如果你有信心在你的variables中没有零,那么先去吧。