用以下init声明表示一个对象:

class Transaction {
    let title: String
    init (title: String) {
        self.title = title
    }
}

我想在prepareForSegue中写下以下内容:
destinationVC.transaction = transactions[row] as Transaction

如何在destinationVC中声明transaction,因为它不允许我在没有常量的情况下实例化它。

最佳答案

你必须在目标vc的课堂上写这样的东西:

var transaction: Transaction!

所以您可以在prepareForSegue中传递一个变量。
出于两个原因,我们在这里使用!(固有的未包装可选类型)。
我们不能直接控制视图控制器的实例化过程,这意味着我们不能在这里使用它的-init。因此,我们不能声明为类型Transaction并将值传递给-init
如果您在-prepareForSegue:中传入了一个值,则可以保证变量有一个值。声明它为Transaction?并在每次使用时展开,会增加不必要的开销。

关于swift - 快速传递带有常量的对象,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31414817/

10-14 20:13