为什么我会收到此错误? Switch语句不返回单元格? 有人可以解释一下吗?
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
switch indexPath.row {
case 0:
let cell = tableView.dequeueReusableCell(withIdentifier: "LogoStyle1", for: indexPath) as! LogoStyle1
cell.backgroundColor = UIColor.clear
return cell
case 1:
let cell = tableView.dequeueReusableCell(withIdentifier: "FieldStyle1", for: indexPath) as! FieldStyle1
cell.backgroundColor = UIColor.clear
cell.delegate = self
return cell
case 2:
let cell = tableView.dequeueReusableCell(withIdentifier: "ButtonStyle1", for: indexPath) as! ButtonStyle1
cell.backgroundColor = UIColor.clear
cell.delegate = self
return cell
default:
break
}
}
答案 0 :(得分:3)
这是编译器过度担心的事情之一。编译器基本上问你,如果indexPath.row
既不是0也不是1还是2,该怎么办?在那种情况下返回什么。作为程序员,您知道indexPath.row
将始终是其中一个值,但编译器不知道。
所以你需要在default
的情况下返回一些东西,但返回任何东西都没有意义,是吗?在这种情况下,我只想写:
fatalError("Somehow indexPath.row is an unexpected value.")
如果达到default
案例,这将导致应用程序崩溃。如果达到默认情况,则可能意味着您的代码出现了问题(或者可能是API中的错误(不太可能)!),因为您知道表视图只有3行。该应用程序可能应该在此时崩溃。
答案 1 :(得分:1)
CellForRowAtIndexPath 委托方法也会返回单元格。因此,在默认的swicth块中,您需要返回一个单元格。 错误将消失。