如何知道可选链接在哪里破碎?

时间:2014-10-23 08:38:01

标签: swift optional

所以在iOS Swift中,我们可以执行可选链接来简化nil

中的let johnsAddress = Address() johnsAddress.buildingName = "The Larches" johnsAddress.street = "Laurel Street" john.residence!.address = johnsAddress if let johnsStreet = john.residence?.address?.street { println("John's street name is \(johnsStreet).") } else { println("Unable to retrieve the address.") } // prints "John's street name is Laurel Street." 检查
john.residence?.address?.street

我了解residence中可选链接的使用情况,但我们如何知道链实际上在哪里(如果addressnilresidence} )。我们可以确定addressnilif-else,还是我们需要再次使用{{1}}进行检查?

3 个答案:

答案 0 :(得分:8)

然后不要做链条。只有当你不打算停止时,这条链才有意思。如果你这样做,请在有趣的地方进行分解 - 否则,你会在哪里输入不良案例的代码?

if let residence = john.residence {
  if let address = residence.address {
    ...
  } else {
    println("missing address")
  }
} else {
  println("missing residence")
}

答案 1 :(得分:5)

我不这么认为。可选链接是一种方便的快捷语法,您可以放弃一些控制以及几个按键。

如果你真的需要知道链断裂的确切位置,你必须通过链接链接到多个变量。

答案 2 :(得分:2)

无法确定可选链接停止的位置。但是你可以使用:

if let johnsStreet = john.residence?.address?.street {
    println("John's street name is \(johnsStreet).")
} else if let johnAddress = john.residence?.address {
    println("Unable to retreive street, but John's address is \(johnAddress).")
} else {
    println("Unable to retrieve the address.")
}