用以下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/