gpt4 book ai didi

swift - 在 Swift 中进行可选绑定(bind)比顺序绑定(bind)有什么优势?

转载 作者:搜寻专家 更新时间:2023-10-31 22:10:48 26 4
gpt4 key购买 nike

在简短教程中here ,在第 5 步中分配了一个委托(delegate):

if let nav = segue.destination as? UINavigationController,
let classBVC = nav.topViewController as? ClassBVC {
// 'self' is ClassAVC which has been delegated.
classBVC.delegate = self
}

我发现很难遵循这些陈述,所以只写是不是一个很大的缺点:

let nav = segue.destination as? UINavigationController
let classBVC = nav?.topViewController as? ClassBVC
classBVC!.delegate = self

最佳答案

没有顺序绑定(bind)这样的东西。您在第二条语句中所做的称为带有可选转换的可选链接,如果不是最后一行中的强制展开,这将是安全的。

此处的力展开使您的第二个解决方案不安全。如果之前的任何可选操作导致 nil 值,将发生运行时异常。

classBVC!.delegate = self

如果您需要解包一个可选值,可选绑定(bind)是最好的选择之一。您可以通过减少 if let 语句的数量来使可选解包的样板代码最少。在某些情况下,使用 guard let 而不是 if let 也可以使代码更清晰,因为您不必将 block 彼此嵌套。

使用可选绑定(bind),你永远不会看到

unexpectedly found nil while unwrapping an optional value

运行时异常,如果您强制解包实际上可能具有 nil 值的可选值,您可能会经常看到这种情况。

guard let nav = segue.destination as? UINavigationController, let classBVC = nav.topViewController as? ClassBVC else { return }
classBVC.delegate = self

关于swift - 在 Swift 中进行可选绑定(bind)比顺序绑定(bind)有什么优势?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46308519/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com