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

Kle*_*ioz 6 enums objective-c ios

下面的枚举用于BMI工具中的几个位置:

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

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

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

谢谢.

col*_*ash 4

不幸的是,使用 Objective-C 是不可能实现这一点的。但是,如果您可以使用 Swift,那么它是用 Swift 编写的。

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

UIKIT_EXTERN NSString *const NSFontAttributeName NS_AVAILABLE_IOS(6_0);
Run Code Online (Sandbox Code Playgroud)

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

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