gpt4 book ai didi

ios - 如何在 Swift 中正确转换为子类?

转载 作者:搜寻专家 更新时间:2023-10-30 21:49:15 25 4
gpt4 key购买 nike

我有一个包含许多不同单元格的 UITableView,根据数据源的内容数组中的内容,它们应该显示自定义内容。

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
var cell : UITableViewCell? = nil
let objectAtIndexPath: AnyObject = contentArray![indexPath.row]

if let questionText = objectAtIndexPath as? String {
cell = tableView.dequeueReusableCellWithIdentifier("questionCell", forIndexPath: indexPath) as QuestionTableViewCell
cell.customLabel.text = "test"
}

return cell!
}

这里我得到的错误是

UITableViewCell 没有属性 customLabel

QuestionTableViewCell 确实有。我对 QuestionTableViewCell 的转换有什么问题?

最佳答案

问题不在于您的转换,而在于您对 cell 的声明。您将其声明为可选的 UITableViewCell,并且该声明将永远保留 - 这是编译器所知道的全部内容。

因此您必须将 在调用点 转换为 customLabel。而不是这个:

cell.customLabel.text = "test"

你需要这个:

(cell as QuestionTableViewCell).customLabel.text = "test"

您可以通过声明一个不同 变量(因为您知道在这种特殊情况下您的单元格将是一个 QuestionTableViewCell)来让自己更轻松地完成这项工作,但只要您只有一个变量,cell,你必须不断地将它转换为你认为它真正会成为的任何类。就个人而言,我会写一些更像这样的东西,正是为了避免重复转换:

    if let questionText = objectAtIndexPath as? String {
let qtv = tableView.dequeueReusableCellWithIdentifier("questionCell", forIndexPath: indexPath) as QuestionTableViewCell
qtv.customLabel.text = "test"
cell = qtv
}

关于ios - 如何在 Swift 中正确转换为子类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26438946/

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