如果我的应用程序有一个ScoreModel需要传递给下一个UIViewController。它可能不存在,因此不会传递给这个新的UIViewController。如果是这种情况,我想让它创建一个新的模型实例。这不起作用(无休止的循环),但它会让我知道我要创造什么:

var scoreModel : ScoreModel! {
    get {
        if self.scoreModel == nil {
            return ScoreModel()
        } else {
            return self.scoreModel
        }
    }
    set {
        self.scoreModel = newValue
    }
}

如何在不进入循环的情况下检查当前版本的scoreModel == nil

最佳答案

如果,您只是将scoreModel属性设置为可选(不管怎样,这是更好的约定),而不是尝试使用自定义getter/setter,那么当您想将它传递给下一个视图控制器时,您将检查它是否为nil。像这样的:

var scoreModel: ScoreModel?
let nextViewController = UIViewController()
nextViewController.scoreModel = scoreModel ?? ScoreModel()

10-06 08:30