以下枚举用于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导致枚举标识符而不是相关值。
感谢。
答案 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。