【发布时间】:2017-01-06 22:28:20
【问题描述】:
我有一门课程ScoreModel 简化为:
class ScoreModel {
var teamName : String!
}
它可以放在Init() 函数中,因为它需要始终设置,但这无助于我对问题的理解:
我有一个ScoreViewController : UIViewController,我使用非可选的ScoreModel:
class ScoreViewController {
var scoreModel : ScoreModel!
}
使用prepareForSegue 传递。这一切正常,但是当我想获取 teamName 时,它作为可选返回:
override func viewWillAppear(_ animated : Bool) {
let name = scoreModel.teamName
print(name)
}
这个输出:
Optional("teamNameEntered")
但该变量在 ScoreModel 中标有感叹号,因此应将其解包。为什么它仍然返回一个 Optional?
编辑: 根据要求,prepareForSegue 方法:
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if let destinationVC = segue.destination as? ScoreViewController {
let scoreModel = self.scoreModel ?? ScoreModel()
destinationVC.scoreModel = scoreModel
}
}
【问题讨论】:
-
你能发布 prepareForSegue 代码吗?
-
添加了 prepareForSegue
-
第 1 课:不要使用隐式展开的选项
-
谢谢我找到了,奇怪的是我必须强制解开我隐含的解包选项。看起来很奇怪