在Swift中将可选字符串转换为int

时间:2015-07-29 08:03:09

标签: swift optional

将可选字符串转换为int时遇到麻烦。

   println("str_VAR = \(str_VAR)")      
   println(str_VAR.toInt())

结果是

   str_VAR = Optional(100)
   nil

我希望它是

   str_VAR = Optional(100)
   100

3 个答案:

答案 0 :(得分:11)

在撰写本文时,此页面上的其他答案使用了旧的Swift语法。这是一次更新。

将可选字符串转换为Int:String? -> Int

let optionalString: String? = "100"
if let string = optionalString, let myInt = Int(string){
     print("Int : \(myInt)")
}

这会将字符串"100"转换为整数100并打印输出。如果optionalStringnilhello3.5,则不会打印任何内容。

另请考虑使用guard statement

答案 1 :(得分:6)

你可以这样解开:

if let yourStr = str_VAR?.toInt() {
    println("str_VAR = \(yourStr)")  //"str_VAR = 100" 
    println(yourStr)                 //"100"

}

有关详细信息,请参阅THIS

何时使用“if let”?

if let是Swift中的一个特殊结构,它允许您检查一个Optional是否包含一个值,如果它存在,则使用unwrapped值执行某些操作。我们来看看:

if let yourStr = str_VAR?.toInt() {
    println("str_VAR = \(yourStr)")
    println(yourStr)

}else {
    //show an alert for something else
}

if let结构展开str_VAR?.toInt()(即检查是否存储了值并获取该值)并将其值存储在yourStr常量中。您可以在if的第一个分支内使用yourStr。请注意,如果您不需要使用内部?要么 !了。重要的是要意识到yourStr实际上是Int类型,它不是可选类型,因此您可以直接使用其值。

答案 2 :(得分:0)

试试这个:

if let i = str_VAR?.toInt() {
    println("\(i)")
}