gpt4 book ai didi

ios - 为什么列表在 Swift 的另一个函数中使用时会变空?

转载 作者:搜寻专家 更新时间:2023-11-01 06:48:19 25 4
gpt4 key购买 nike

我想从 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 时,它返回空数组。

为什么初始化后数组变空了?正如我所写的,我在自定义类的第一行中保留了带有 var labelArray = [UILabel]()labelArray。另请注意,我没有将其声明为 weak var - 它只是 var 声明。

那么我在这里缺少什么?这个应用程序是用 Xcode 6.1 Beta 编写的。

最佳答案

您在 2 个地方声明了 labelArray:在方法内部和作为类的实例变量。这是两个截然不同的事物,因此对其中一个的更改不会影响另一个。实例变量并没有变成为空:它一开始就是这样,而且从未改变过。

另外,init 没有返回任何东西(而且它不应该返回)。

关于ios - 为什么列表在 Swift 的另一个函数中使用时会变空?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26878227/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com