我想从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编写的。
最佳答案
您在2个地方声明了labelArray
:在方法内部和作为类的实例变量。这是两件截然不同的事情,因此对一项的更改不会影响另一项。实例变量并没有变空:它以这种方式开始,并且从未改变。
另外,init
不返回任何内容(也不应该返回任何内容)。
关于ios - 在Swift的另一个函数中使用列表时,为什么列表会变为空?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26878227/