单元格中的 if 条件中的多个返回语句 ForRowAtIndexPath 抛出"Control may reach end of non-void function"错误



我有一个cellForRowAtIndexPath方法它是这样的

if (indexPath.row == 0) {
    //add customCell1
    return customCell1;
}
else if (indexPath.row == 1) {
    //add customCell2
    return customCell2;
}

等等,对于每一行。

我知道我得到这个错误的原因是因为我的返回语句在条件语句中。为什么编译器不检测每个分支返回一个值?此外,在这种情况下,条件分支对我来说似乎是不可避免的,因为我使用不同的自定义单元格来填充表的每一行。我能做到吗?

编译器报错的原因是您的if条件不是详尽的。这里,您只检查2行,但行数将在运行时而不是在编译时推断出来。所以,你必须告诉编译器你想让它处理的所有情况。

所以,解决你的情况(我相信你已经知道这一点),是在最后写一个else

如果最后的else if`` is false? You must at least have a final else without an if ' .

运行Analyzer并在语句切换中单击,以显示分析器查找此警告所使用的路径。

你必须覆盖所有的可能性,似乎你只覆盖第0行或第1行。

您必须在末尾指定else来捕获其他可能性或者在不适用if的情况下在末尾简单地返回因为行不是0或1

如果你在条件方法中返回一个值,你必须需要特定的任何条件将匹配,所以只有"If"one_answers"Else If"将不工作,还在末尾添加"Else "并返回各自的单元格。

最新更新