无法强制拆开值

时间:2018-12-09 18:29:40

标签: swift

var tuples: String! = "subash"
if let goin = tuples {
    print(goin!)
}

我收到此错误:

  

无法强制解开非可选类型String的值

我不知道发生的常量异常与元组相同,但是为什么当我强制展开时却向我显示错误

代替上面的代码,它运行良好:

var tuples: String! = "subash"
print(tuples!)

但是,请您为上述问题提供解决方案

1 个答案:

答案 0 :(得分:0)

如果您知道可选方法的工作原理,那是正常的。

在if语句中,正确的表达式必须是Optional或隐式展开的Optional,但不是“ normal”值。

这是正确的代码:

let tuples: String! = "subash"

if let goin = tuples {
    print(goin) // NO NEED to unwrap, because going IS NOT Optional
}

此代码运行良好的原因:

var tuples: String! = "subash"
print(tuples!)
print(tuples)

...是因为元组的类型为隐式解包可选。

但是,在一般情况下是这样的:

let myVar: String! = "some string"

if let myNewVar = myVar {
    // Some code...
}

... myVar始终是隐式展开的可选,而myNewVar则为字符串类型,这是因为可选展开与if let语句一起工作。

最后,如果我们这样解开值:

let myVar: String! = "some string"

if let myVar = myVar {
    // Some code...
    print(myVar)
}

打印出的值为temp myVar,其类型为String,并且遮盖了我们最初声明的隐式展开myVar变量。