在初始化之前使用的变量

Aoi*_*Aoi 6 ios swift

嘿伙计我有这个问题

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    let destViewController = segue.destinationViewController as! SecondTableViewController
    var secondArrays :  SecondTableData

    if let indexPath = self.tableView.indexPathForSelectedRow {
        secondArrays = secondArrayData[indexPath.row]
    }
    destViewController.secondArray = secondArrays.secondTitle    
}
Run Code Online (Sandbox Code Playgroud)

我有一个错误与destViewController.secondArray = secondArrays.secondTitle它说:secondArrays在初始化之前使用,为什么我得到该错误?请帮助,只是一个swift的新手.TIA

Bha*_*odi 12

这是因为在Swift中初始化变量的方式,在Swift Class中,每个属性在使用之前都需要一些默认值.

Swift中的类初始化是一个两阶段过程.在第一阶段,每个存储的属性都由引入它的类分配初始值.一旦确定了每个存储属性的初始状态,第二阶段就开始了,并且每个类都有机会在新实例被认为可以使用之前进一步定制其存储的属性.

尝试更改您的代码,如下所示:

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
  let destViewController = segue.destinationViewController as! SecondTableViewController
  var secondArrays :  SecondTableData?

  if let indexPath = self.tableView.indexPathForSelectedRow {
    secondArrays = secondArrayData[indexPath.row]

    //Here you're making sure that the secondArrays would must have a value
    destViewController.secondArray = secondArrays.secondTitle
  }

}
Run Code Online (Sandbox Code Playgroud)