Swift传递一个带有常量的对象

时间:2015-07-14 18:43:47

标签: swift

使用以下init声明说出一个对象:

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

我想在prepareForSegue中写下以下内容:

destinationVC.transaction = transactions[row] as Transaction

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

2 个答案:

答案 0 :(得分:2)

您必须在目的地vc的课程中写下这样的内容:

var transaction: Transaction!

因此,您可以在prepareForSegue中传递变量。

出于两个原因,我们在这里使用!(固有地解包的可选类型)。

  • 我们无法直接控制视图控制器的实例化过程,这意味着我们无法在此处使用其-init。因此,我们无法声明为Transaction类型并将值传递给-init
  • 如果您在-prepareForSegue:中传入了一个值,则保证变量具有值。将其声明为Transaction?并在每次使用时展开都会增加不必要的开销。

答案 1 :(得分:0)

主控制器中的变量transactions必须声明为Array<Transaction>

destinationVC中的变量transaction必须声明为Transaction