2016-03-22 7 views
0

Ich implementiere Logik für die Rückgabe bestimmter Zellen in einem Tabellenansichtsaufruf. Welche Vorschläge gibt es, um den Fall "Standard" abzudecken, wenn ich eine switch-Anweisung verwende?Behandeln von Fällen, die nicht in TableView auftreten werden (_: cellForRowAtIndexPath) -> UITableViewCell

Siehe Beispiel hier:

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? 
    } 
} 

Unter den Ansätzen, ich habe in Betracht gezogen:

  • haupt nicht den Schalter, aber es scheint, für einen Schalter strukturell Beschlag.
  • Eine Laufzeitausnahme auslösen. Nicht möglich, da Laufzeitausnahmen in Swift nicht aufregend sind.
  • Rückgabe nil - Kann das nicht tun, da diese Funktion kein optionales zurückgibt.

Würde mich über Kommentare und Feedback freuen.

Antwort

2

Sie sollten Terminierungsfunktionen wie assertionFailure(), preconditionFailure() oder fatalError("Unexpected section in TableView") aufrufen können, um die Anwendung in diesem Szenario zu beenden.

+0

Danke! fatalError ("Unerwarteter Abschnitt \\ (indexPath.section) in TableView") ist es. –

0

Ich mache das gleiche, was Sie tun. Es wird möglicherweise nichts angezeigt, aber zumindest wird die App nicht abstürzen, was für die Benutzer wichtig ist.