gpt4 book ai didi

ios - 可选错误 Swift 1.2 到 2.0

转载 作者:行者123 更新时间:2023-11-28 13:03:46 24 4
gpt4 key购买 nike

我正在尝试将 Swift 1.2 转换为 2.0,但在分配 tablviewCell 表单 dequeueReusableCellWithIdentifier 时遇到问题:

var cell:UITableViewCell? = tableview!.dequeueReusableCellWithIdentifier(identifier as String) as? UITableViewCell;

if (cell == nil)
{
cell = UITableViewCell(style: UITableViewCellStyle.Default, reuseIdentifier: identifier as String)
cell?.backgroundColor = UIColor.clearColor()
}

错误:

Downcast form UITableViewCell to UITableViewcell only unwraps optionals, did you mean to use '!'?

我相信 func dequeueReusableCellWithIdentifier 不会返回可选的,所以我试过了:

var cell:UITableViewCell = tableview.dequeueReusableCellWithIdentifier(identifier as String)     
if (cell == nil){
...

我得到两个错误:

value of optional type tableview not unwrapped, did you mean to use! Binary operator can not be applied to operands of type UITableViewCEll and Niliretalconversion.

感谢任何意见

最佳答案

dequeueReusableCellWithIdentifier 返回一个 UITableViewCell?。您正试图将其转换为非可选 (as?UITableViewCell),但随后又将其分配回可选 (cell:UITableViewCell?)。您不会从这项额外工作中获得任何信息,并且可以使用更简单的等效表达式。您最初的警告似乎是令人困惑的忽略转换的结果。

var cell:UITableViewCell? = tableview!.dequeueReusableCellWithIdentifier(identifier as String)

我们在这里知道 cell 的类型,因为它与 dequeueReusableCellWithIdentifier 的返回类型相匹配,所以我们可以这样写:

var cell = tableview!.dequeueReusableCellWithIdentifier(identifier as String)

我不知道 identifier 的类型是什么,但是 as 暗示的是总是可以成功地转换为 String 所以你可能可以进一步简化为:

var cell = tableview!.dequeueReusableCellWithIdentifier(identifier)

这整个条件可能可以通过 if letguard 赋值进一步简化,但如果不知道调用它的更大上下文,就很难确定。

关于ios - 可选错误 Swift 1.2 到 2.0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33292462/

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