在Swift 1.2中将String转换为Int的可选问题

时间:2016-07-01 22:24:32

标签: swift

我无法弄清楚为什么这个'可选'在方案1中不起作用,但没有可选的?它适用于方案2。

使用Swift v 1.2,xCode 6.2

var stuff = "6t"

// SCENARIO 1
// Why is this failing when stuff contains non-digit characters?
// i.e. it works if stuff = "45".
if let value: Int? = stuff.toInt() {
    println("value \(value!)")
}

// SCENARIO 2    
// This works!
if let value = stuff.toInt() {
    println("val3 \(value)")
}

参考也参见这些SO答案: *我想知道这里的Sift 1.2示例/答案是否完全错误? Swift - Converting String to Int

Converting String to Int in Swift

2 个答案:

答案 0 :(得分:1)

没有必要使用if let value: Int?。如果if let有效,那么该值为Int。它不可能是零。因此,您无需将其声明为可选项。

答案 1 :(得分:1)

第一个IF始终为真。

事实上两种情况都是:

  1. toInt()返回有效的Int
  2. 何时返回nil
  3. if let将成功(是的,第一个IF无用)。

    特别是在您的代码toInt()中,在两种情况下都会返回nil。 但是在您的第一个场景中,您只是接受nil作为输入THEN块的有效值。