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,怎么办?
enum
s 来自纯 C。没有关于标签字符串的运行时信息。因此,不可能将 NSString
的实例转换为枚举标签的值。做到这一点的唯一方法是拥有 if 级联。
这是我不使用 C 枚举的原因之一,如果可能的话。我只是为标签定义字符串并将字符串本身作为参数传递,如果枚举值只是一个标记,一个选项。如果我需要值的组合(又名位集),我会使用 NSSet
和字符串的实例。
如果您对枚举的特定值感兴趣(而不是简单地使用 0、1、2 ……),您可以使用词典,如您 Q 的评论中的 link 中所述。
typedef enum {
red = 10,
blue = 21,
white = 32
} colors;
#define ENUMvalue2str(value) @(#value)
我用ENUMvalue2str(white)
得到@"white"
,
现在,我想从 @"white"
得到 white
。
不会用NSArray,怎么办?
enum
s 来自纯 C。没有关于标签字符串的运行时信息。因此,不可能将 NSString
的实例转换为枚举标签的值。做到这一点的唯一方法是拥有 if 级联。
这是我不使用 C 枚举的原因之一,如果可能的话。我只是为标签定义字符串并将字符串本身作为参数传递,如果枚举值只是一个标记,一个选项。如果我需要值的组合(又名位集),我会使用 NSSet
和字符串的实例。
如果您对枚举的特定值感兴趣(而不是简单地使用 0、1、2 ……),您可以使用词典,如您 Q 的评论中的 link 中所述。