当我准备为第二个视图触发我的 segue 时,我还会发送一些如下值:
if let aTime = ads[indexPath.row]["unix_t"].int {
toView.time = aTime
}
if let aTitle = ads[indexPath.row]["title"].string {
toView.title = aTitle
}
在第二个 VC 中,我声明了如下变量:
var time: Int?
var title: String?
这就是我解开这些值的方式:
if time != nil {
timeLabel.text = String(time!)
}
if title != nil {
titleLabel.text = title!
}
这一切都有效,我从来没有收到任何由未包装的变量或零值引起的错误。但有没有更简单的方法呢?
现在感觉我检查太多了
我可以想到三种选择。
-
if/let
。与您当前的选项非常相似,但您不必隐式解开。
if let time = time {
timeLabel.text = "\(time)"
}
if let title = title {
titleLabel.text = title
}
您甚至可以在同一条线上展开它们。这样做的缺点是,如果其中之一是nil
,那么两个标签都不会被设置。
if let time = time, let title = title {
timeLabel.text = "\(time)"
titleLabel.text = title
}
-
guard/let
。如果它们在类似的函数中setupViews()
,然后你可以像这样一行解开:
func setupViews() {
guard let time = time, let title = title else { return }
timeLabel.text = "\(time)"
titleLabel.text = title
}
-
您可以使用默认值和??
操作员快速打开包装。
timeLabel.text = "\(time ?? 0)"
titleLabel.text = title ?? ""
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)