J'ai une chaîne que je veux analyser et retourner une énumération équivalente. J'ai besoin d'utiliser le type enum ailleurs, et je pense que j'aime comment je le définis. Le problème est que je ne connais pas un bon moyen de vérifier la chaîne par rapport aux valeurs enum sans être redondant sur l'ordre des énumérations.Existe-t-il un moyen concis de mapper une chaîne à une énumération en Objective-C?
N'y a-t-il pas d'autre option qu'un gros if/else? En Python, je ferais probablement quelque chose comme ce qui suit, bien que pour être honnête, je ne suis pas non plus amoureux de ça.
## maps url text -> constant string
RED_CONSTANT = 1
BLUE_CONSTANT = 2
GREEN_CONSTANT = 3
TYPES = {
'red': RED_CONSTANT,
'green': GREEN_CONSTANT,
'blue': BLUE_CONSTANT,
}
def parseColor(inputString):
return TYPES.get(inputString)
ps. Je sais qu'il y a des constantes de couleur dans Cocoa, ce n'est qu'un exemple.
Ce n'est pas si grave. Je peux virer sur une valeur enum plus ZZColorMax donc je n'ai pas besoin de coder en dur le nombre de chaînes. – zekel
+1 le dictionnaire est probablement la meilleure façon de faire. –