我想从UITableViewCell
创建一个子类,其中包含以下代码:
var labelArray = [UILabel]()
convenience init(style: UITableViewCellStyle, reuseIdentifier: String, column: Int, array: [Int]) {
var cell = UITableViewCell(style: style, reuseIdentifier: reuseIdentifier)
self.init()
let left_padding = 0
var labelArray = [UILabel]()
// populate the labelArray
println(labelArray) // print the populated Array
}
初始化看起来像是成功的,labelArray
打印出正确的内容。
但是,当我尝试在另一个函数中使用填充的labelArray
时,例如:
func changeLabelWithString(string: String, index: Int) {
var label = labelArray[index]
label.text = string
}
这传递了编译但是遇到了运行时错误,因为labelArray[index]
收到错误:fatal error: Cannot index empty buffer
。
因此,当我尝试从函数中检出labelArray
时,它会返回空数组。
为什么数组在初始化后变空?正如我所写,我在自定义类的第一行保留labelArray
var labelArray = [UILabel]()
。另请注意,我没有将其声明为weak var
- 它只是var
声明。
那我在这里错过了什么?这个应用程序是用Xcode 6.1 Beta编写的。
答案 0 :(得分:3)
您在2个地方声明了labelArray
:在方法内部并作为类的实例变量。这些是两个不同的东西,因此改变为一个不会影响另一个。实例变量变为为空:它以这种方式开始并且从未改变过。
此外,init
没有返回任何内容(并且不应该返回)。