处理在tableView(_:cellForRowAtIndexPath)中不会发生的案例 - >的UITableViewCell

时间:2016-03-22 16:08:56

标签: ios swift uitableview switch-statement tableviewcell

我实现了在表视图调用中返回特定单元格的逻辑。有哪些建议可以涵盖"默认"如果我使用switch语句?

参见此处的示例:

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    switch indexPath.section {
    case 0: // CompanyDetailsGeneralTableViewCell
        let cell = tableView.dequeueReusableCellWithIdentifier("CompanyDetailsGeneral", forIndexPath: indexPath) as! CompanyDetailsGeneralTableViewCell

        // STUFF FOR CompanyDetailsGeneralTableViewCell

        return cell
    case 1:
        let cell = tableView.dequeueReusableCellWithIdentifier("CompanyResources", forIndexPath: indexPath) as! CompanyResourcesTableViewCell

        return cell
    default:
        // Can't reach here (never!) as table has only 2 sections.
        return UITableViewCell() // Hack. BEST PRACTICE?
    }
}

我考虑过的方法之一:

  • 根本没有使用开关,但它似乎在结构上更适合开关。
  • 抛出运行时异常。不可能,因为运行时异常在Swift中并不令人兴奋。
  • 返回nil - 不能这样做,因为此函数不返回可选项。

非常感谢评论和反馈。

2 个答案:

答案 0 :(得分:2)

您应该可以调用终止函数,例如assertionFailure()preconditionFailure()fatalError("Unexpected section in TableView"),以便在该方案中终止应用程序。

答案 1 :(得分:0)

我做同样的事情。它可能不显示任何内容,但至少应用程序不会崩溃,这对用户很重要。