NSString 枚举值 (Objc)

NSString to enum Value (Objc)

typedef enum {
    red = 10,
    blue = 21,
    white = 32
} colors;
#define ENUMvalue2str(value)   @(#value)

我用ENUMvalue2str(white)得到@"white", 现在,我想从 @"white" 得到 white。 不会用NSArray,怎么办?

enums 来自纯 C。没有关于标签字符串的运行时信息。因此,不可能将 NSString 的实例转换为枚举标签的值。做到这一点的唯一方法是拥有 if 级联。

这是我不使用 C 枚举的原因之一,如果可能的话。我只是为标签定义字符串并将字符串本身作为参数传递,如果枚举值只是一个标记,一个选项。如果我需要值的组合(又名位集),我会使用 NSSet 和字符串的实例。

如果您对枚举的特定值感兴趣(而不是简单地使用 0、1、2 ……),您可以使用词典,如您 Q 的评论中的 link 中所述。