【问题标题】:Convert optional string to int in Swift在 Swift 中将可选字符串转换为 int
【发布时间】:2015-07-29 08:03:08
【问题描述】:

在将可选字符串转换为 int 时遇到问题。

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

结果是

   str_VAR = Optional(100)
   nil

我希望它是

   str_VAR = Optional(100)
   100

【问题讨论】:

    标签: swift optional


    【解决方案1】:

    在撰写本文时,此页面上的其他答案使用旧的 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

    【讨论】:

    • 你知道为什么这个构造会导致 nil 吗?让可选字符串:字符串? = "100" , 让 newVal = Int(optionalString!)
    【解决方案2】:

    你可以这样打开它:

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

    更多信息请参考THIS

    何时使用“如果让”?

    if let 是 Swift 中的一个特殊结构,它允许您检查 Optional 是否包含一个值,并在它存在的情况下 - 对未包装的值执行一些操作。让我们看看:

    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。注意里面 if 你不需要使用 ?或者 !了。重要的是要意识到yourStr 实际上是Int 类型,它不是可选类型,因此您可以直接使用它的值。

    【讨论】:

    • 我错过了什么? Swift 告诉我“String 类型的值没有成员 toint”
    • @TahoeWolverine toInt() 不再可用。
    【解决方案3】:

    试试这个:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-01-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-11
      • 2015-08-26
      • 2014-11-18
      相关资源
      最近更新 更多