Toutes les valeurs d'enum en swift

Bonjour,


 


Je cherche à  récupérer toutes les valeurs d'enum. J'ai ce code qui marche mais qui n'est franchement pas élégant. Existe-t-il une méthode plus classe ?



enum Weather: String {
case sun = "Soleil"
case rain = "Pluie"
case snow = "Neige"
static let allValues = [sun.rawValue, rain.rawValue, snow.rawValue]
}

print(Weather.allValues)


Merci d'avance


Mots clés:

Réponses

  • Salut,


     


    Je pense que y a aucun moyen "elegant". Par contre les patterns matching sont assez puisants pour te faciliter pleins de choses avec les enums, probablement tu n'auras pas le besoin d'avoir une liste de tous les enums.  

  • Joanna CarterJoanna Carter Membre, Modérateur

    Je cherche à  récupérer toutes les valeurs d'enum. J'ai ce code qui marche mais qui n'est franchement pas élégant. Existe-t-il une méthode plus classe ?




    Tout d'abord, pourquoi ?
  • iLandesiLandes Membre
    août 2016 modifié #4


    Tout d'abord, pourquoi ?




     


     


    En fait mes je dois remplir pour l'utilisateur les valeur énumérées dans un picker.


  • Joanna CarterJoanna Carter Membre, Modérateur

    Donc, pourquoi pas utiliser un Array<String> ?


  • FKDEVFKDEV Membre
    août 2016 modifié #6

    Ce n'est à  priori pas possible simplement (il y a des méthodes sur stackoverflow qui vont taper en mémoire pour trouver les valeurs mais bof...).


    J'espère que ce sera dans swift 4, parce que c'est vraiment quelque chose qu'on s'attend à  avoir dans un langage moderne.


     


    Cela dit, pour ce que tu veux faire, selon moi, tu ne te poses pas la bonne question.


    Les questions à  se poser sont plutôt


    -Comment je fais le mapping entre les valeurs en mémoire et les valeurs affichées. Avec ta méthode tu réponds de manière implicite que ce sont les mêmes.


    -Comment je détermine la liste des valeurs possibles en fonction du contexte. Avec la méthode que tu cherches tu réponds de manière implicite : toutes sans condition.


     


    Mais imagine que tu aies besoin de traduction ou de restreindre la liste des valeurs en fonction du contexte (pas de neige en été par exemple).

Connectez-vous ou Inscrivez-vous pour répondre.