在编译应用程序时,会收到警告,并且我不知道如何修复或隐藏它。从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() }
一切正常。我被卡住了。
谢谢!
答案 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() }