Objective-C - 使用枚举标识符作为字符串

时间:2014-08-11 12:07:52

标签: ios objective-c enums

以下枚举用于BMI工具中的多个位置:

typedef NS_ENUM (NSInteger, BMIStatus) {
    Malnutrition = 1,
    Anorexia = 2,
    Thinness = 3,
    Normal = 4,
    Overweight = 5,
    Obesity = 6,
    Morbid = 7
};

将“营养不良”用作字符串是否有诀窍?考虑到我有一个名为“Malnutrition.png”的图像,我想用经典的ImageNamed加载,而不使用存储[1] => @"Malnutrition"的中间数组。

我的想法是使用一种[UIImage imageNamed:[NSString stringWithFormat:@"%e", Malnutrition]],其中%e导致枚举标识符而不是相关值。

感谢。

2 个答案:

答案 0 :(得分:4)

不幸的是,使用Objective-C是不可能的。但是,如果你可以使用Swift,它就在Swift中。

这在历史上使用NSString常量在Apple的代码中处理。例如:

UIKIT_EXTERN NSString *const NSFontAttributeName NS_AVAILABLE_IOS(6_0);

如果需要在int值和NSString值之间进行映射,则需要编写映射函数。

另外,请确保为枚举和字符串常量添加前缀!

答案 1 :(得分:0)

如果您想要一个字符串用于调试目的,请添加一个方法- (NSString*) stringFromBMIStatus,其中switch语句返回各种字符串,默认打印数值以进行意外输入。

如果你想要一个为每个枚举值提供NSImage名称的字符串,请添加一个方法- (NSString*) imageNameFromBMIStatus,可能会因意外输入而返回nil。