Toutes les valeurs d'enum en swift
iLandes
Membre
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
Connectez-vous ou Inscrivez-vous pour répondre.
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.
Tout d'abord, pourquoi ?
En fait mes je dois remplir pour l'utilisateur les valeur énumérées dans un picker.
Donc, pourquoi pas utiliser un Array<String> ?
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).