嘿伙计我有这个问题
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)
| 归档时间: |
|
| 查看次数: |
19203 次 |
| 最近记录: |