何时使用可选值(?)和Swift中的关联值(!)?

时间:2016-06-30 06:21:52

标签: ios swift optional

let strName: String! = nil

let strFirstName: String? = nil

使用可选值和使用关联值时,我感到困惑。请帮帮我。

2 个答案:

答案 0 :(得分:3)

用!声明变量!表示在声明时刻,它的值为零,但您确定在将其用于代码之前将其初始化。

宣布?意味着该变量为零,并且您不确定在应用程序执行的任何时刻它是否具有任何值。

答案 1 :(得分:1)

!运算符告诉编译器该变量中存在值 DOES ?告诉编译器该类型的值 MIGHT 存在或可能 NIL 。使用!表示Unwrapping该变量。如果使用不当,它有自己崩溃应用程序的风险。如果您不确定打开optional变量时是否存在值,请使用?并将其解包,如下所示:

var someOptional: Int? = 100

if let anotherVar = someOptional{
print(anotherVar) //You have your unwrapped optional
}
else{
print(someOptional) //Nil if 100 is removed
}

现在尝试删除100.您会看到nil。这就是期权的运作方式。