2017-09-04 1 views
0

Première utilisation d'un commutateur enum, donc quelques questions.comment utiliser une instruction enum switch dans une autre fonction

Je cherche à utiliser cette instruction switch dans une fonction tableView comme ça. Premièrement, est-ce que je déclare une variable ouverte avant d'utiliser le commutateur enum? Si oui, est-ce que je passe dans la variable ouverte au commutateur ou crée le commutateur avec un nouveau nom et en passant dans la variable ouverte? Troisièmement, comment puis-je recevoir la valeur du commutateur?

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

Sa coupe très claire , le statut ouvert peut être, ouvert maintenant c'est-à-dire OUI, fermé maintenant, c'est-à-dire le cas NON et si le statut ouvert n'est pas connu, alors est INCONNU. Si vous rencontrez un problème de syntaxe spécifique, vous pouvez vous référer au lien ci-dessus ou poser une autre question. – BangOperator

+0

J'ai reformulé ma question. – jonpeter

Répondre

1

Voici comment vous pouvez utiliser le ENUM

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 
    } 

Ou

Je vous suggère d'écrire une extension sur GMSPlacesOpenNowStatus comme celui-ci

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

et l'utilisation cette extension comme

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

C'est la réponse que j'espérais, haha. Merci beaucoup, Bang! J'ai décidé d'aller avec la première option, mais pour ceux d'entre vous qui cherchent à utiliser le même, n'oubliez pas de spécifier votre propre UIlabel dans le code. Sinon, votre interface utilisateur sera un désordre pendant les simulations. – jonpeter