Swift nil值行为

时间:2014-06-09 18:22:26

标签: objective-c swift

您是否可以nilSwift中的Objective-C发送邮件,方法与{{1}}相同,而不会导致崩溃?

我尝试查看文档,但找不到与此相关的任何内容。

1 个答案:

答案 0 :(得分:6)

不完全是,您必须使用Optional Chaining。在swift中,如果一个实例被声明为“可选”类型,则该实例只能是nil。通常情况如下:

var optionalString : String?

注意?之后的String 这就是为什么可以为零

除非您首先“解包”它,否则不能在该变量上调用方法,除非您使用上述可选链接。

使用可选链接,您可以深入调用多个方法,这些方法都允许返回nil值:

var optionalResult = optionalString.method1()?.method2()?.method3()

optionalResult也可以是零。如果链中的任何方法返回nil,则不调用其后的方法,而是立即将optionalResult设置为nil。

在明确处理nil的情况之前,您无法直接处理可选值。您可以通过以下两种方式之一来实现:

强制它盲目打开

println(optionalString!)

如果它是零,这将抛出一个运行时错误,所以你应该非常肯定它不是nil

测试它是否为

您可以使用简单的if语句来完成此操作:

if optionalString {
    println(optionalString!)
}
else {
    // it was nil
}

或者您可以将其分配给范围变量,这样您就不必强行打开它:

if let nonoptionalString = optionalString {
    println(nonoptionalString)
}
else {
   // it was nil
}