从UITableViewCell到UITableViewCell的条件转换始终成功

时间:2018-10-19 09:34:06

标签: ios xcode uitableview compiler-warnings

在编译应用程序时,会收到警告,并且我不知道如何修复或隐藏它。从UITableViewCell到UITableViewCell的条件转换始终成功

这是我的代码部分,其中显示警告。

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return arrayPDF.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    guard let cell = tableView.dequeueReusableCell(withIdentifier: "MyCellPDF", for: indexPath)
        as? UITableViewCell else { return UITableViewCell() }

    cell.textLabel?.text = arrayPDF[indexPath.row] + ".pdf"
    return cell
}

我的代码的这一部分会生成警告。

as? UITableViewCell else { return UITableViewCell() }

一切正常。我被卡住了。

谢谢!

2 个答案:

答案 0 :(得分:0)

默认情况下,tableView.dequeueReusableCell(withIdentifier: "MyCellPDF", for: indexPath)返回一个UITableViewCell对象。

所以,当您这样做时:

guard let cell = tableView.dequeueReusableCell(withIdentifier: "MyCellPDF", for: indexPath) as? UITableViewCell else { return UITableViewCell() }

您正在将UITableViewCell对象投射到UITableViewCell。 Xcode只是告诉你这没用。

如果您的课程是UITableViewCell,则可以使用:

let cell = tableView.dequeueReusableCell(withIdentifier: "MyCellPDF", for: indexPath)

如果这是一个自定义类,则可以使用防护,但可以将as? UITableViewCell部分替换为as? MyCustomTableViewCellClass

此致

IMACODE

答案 1 :(得分:0)

您使用过后卫.. else {},所以它必须是可选的,我想您需要的功能是第一个而不是最后一个:     打开函数dequeueReusableCell(withIdentifier identifier:String)-> UITableViewCell吗? //由委托用来获取已经分配的单元,而不是分配新的单元。

@available(iOS 6.0, *)
open func dequeueReusableCell(withIdentifier identifier: String, for indexPath: IndexPath) -> UITableViewCell // newer dequeue method guarantees a cell is returned and resized properly,

您可以通过以下方式继续使用它:

let cell = tableView.dequeueReusableCell(withIdentifier: "MyCellPDF", for: indexPath)

OR

guard let cell = tableView.dequeueReusableCell(withIdentifier: "MyCellPDF") else { return UITableViewCell() }