2017-06-02 2 views
0
typedef enum { 
    red = 10, 
    blue = 21, 
    white = 32 
} colors; 
#define ENUMvalue2str(value) @(#value) 

je ENUMvalue2str(white) obtenir @"white", maintenant, je veux obtenir white de @"white". ne pas utiliser NSArray, comment le faire?NSString à Enum Valeur (objc)

+1

'I veux obtenir blanc de @ "blanc" '<- ce n'est pas clair pour moi ce que vous voulez réaliser. –

+1

Vous pouvez avoir des réponses sur https://stackoverflow.com/questions/925991/objective-c-nsstring-to-enum ou https://stackoverflow.com/questions/7083361/objective-c-convert-string-to- enum ou https://stackoverflow.com/questions/16844728/converting-from-string-to-enum-in-c –

Répondre

0

enum s sont de pur C. Il n'y a pas d'informations d'exécution sur les chaînes d'étiquettes. Par conséquent, il est impossible de traduire une instance d'un NSString en une valeur d'une étiquette d'énumération. La seule façon de le faire est d'avoir des cascades.

C'est une des raisons pour lesquelles je n'utilise pas les énumérations C, si c'est possible. Je définis simplement des chaînes pour l'étiquette et passe la chaîne elle-même comme argument, si la valeur enum est simplement un marqueur, une option. Si j'ai besoin d'une combinaison de valeurs (aka jeux de bits), j'utilise des instances de NSSet avec des chaînes.

Si vous êtes intéressé par une valeur spécifique d'une énumération (au lieu d'avoir simplement 0, 1, 2, ...), vous pouvez utiliser des dictionnaires comme expliqué dans le lien dans le commentaire à votre Q.