2017-09-04 5 views
0

Zum ersten Mal mit einem Enum-Schalter arbeiten, so ein paar Fragen.Wie verwendet man eine Enum-Switch-Anweisung in einer anderen Funktion

Ich suche diese switch-Anweisung in einer TableView-Funktion wie folgt zu verwenden. Zuerst erkläre ich die Variable offen, bevor ich den Enum-Schalter benutze? Wenn ja, übergebe ich die offene Variable an den Schalter oder erstelle den Schalter mit einem neuen Namen und übergebe die offene Variable? Drittens, wie erhalte ich den Wert vom Switch?

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 
    let cell = tableView.dequeueReusableCell(withIdentifier: "FCT") as! FoodCellTwo 

    let each = resultss[indexPath.row] 

    var open: GMSPlacesOpenNowStatus = each.openNowStatus 

    enum open : Int { 


     /** The place is open now. */ 
     case yes 

     /** The place is not open now. */ 
     case no 

     /** We don't know whether the place is open now. */ 
     case unknown 
    } 

    cell.nameLabel.text = each.name 

    return cell 
} 
+0

https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/Enumerations.html#//apple_ref/doc/uid/TP40014097-CH12-ID146 – BangOperator

+0

Sein sehr klarer Schnitt , offener Status kann sein, jetzt öffnen dh JA, jetzt geschlossen, dh Fall NEIN und wenn der offene Status nicht bekannt ist, dann ist UNBEKANNT. Wenn Sie ein bestimmtes Syntaxproblem haben, können Sie den obigen Link verwenden oder eine andere Frage stellen. – BangOperator

+0

Ich formulierte meine Frage um. – jonpeter

Antwort

1

Hier ist, wie Sie die Enum können

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 
     let cell = UITableViewCell() 
     let status = openStatus // Get you open status or you could just use switch(openStatus) 
     switch status { 
     case .yes: 
      cell.textLabel?.text = "This places is open" 
     case .no: 
      cell.textLabel?.text = "This places is closed now" 
     case .unknown: 
      cell.textLabel?.text = "No idea about open status" 
     } 
     return cell 
    } 

Oder

Ich würde Ihnen vorschlagen, eine Erweiterung auf GMSPlacesOpenNowStatus wie diese

extension GMSPlacesOpenNowStatus { 
    func getStringTitle() -> String { 
     switch self { 
     case .yes: 
      return "This places is open" 
     case .no: 
      return "This places is closed now" 
     case .unknown: 
      return "No idea about open status" 
     } 
    } 
} 

und Verwendung zu schreiben diese Erweiterung wie

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 
     let cell = UITableViewCell() 
     let status = openStatus 
     cell.textLabel?.text = status.getStringTitle() 
     return cell 
    } 
+0

Das ist die Antwort, auf die ich gehofft hatte, haha. Vielen Dank, Bang! Ich entschied mich, mit der ersten Option zu gehen, aber für diejenigen von Ihnen, die dasselbe verwenden möchten, denken Sie daran, Ihr eigenes UI-Label im Code anzugeben. Andernfalls wird Ihre Benutzeroberfläche während der Simulationen ein Chaos sein. – jonpeter

Verwandte Themen