【发布时间】:2014-08-11 12:07:52
【问题描述】:
以下枚举在 BMI 工具中的多个地方使用:
typedef NS_ENUM (NSInteger, BMIStatus) {
Malnutrition = 1,
Anorexia = 2,
Thinness = 3,
Normal = 4,
Overweight = 5,
Obesity = 6,
Morbid = 7
};
使用“Malnutrition”作为字符串有诀窍吗?考虑到我有一个名为“Malnutrition.png”的图像,我想使用经典的 ImageNamed 加载它,并且不使用存储 [1] => @"Malnutrition" 的中间数组。
我的想法是使用一种[UIImage imageNamed:[NSString stringWithFormat:@"%e", Malnutrition]],其中 %e 指向枚举标识符而不是关联值。
谢谢。
【问题讨论】:
-
这正是人们为枚举添加前缀以防止此问题的原因。我不确定是否有解决方法,但我建议在此处为您的枚举添加前缀(例如您的类前缀)。
-
我看不出前缀如何让我轻松找到字符串@"Malnutrition",即使我同意为枚举添加前缀的建议。
-
对不起,我完全误解了你的问题。你可以创建一个函数,比如
NSString *BMIStatusToString(NSInteger n),它将每个值转换为特定的 NSString,这是一个好的解决方案吗? -
是的,就像@colinbrash 解决方案一样。映射方法似乎是这里唯一可行的解决方案。
-
为什么要使用枚举?全局常量是更好的选择。
标签: ios objective-c enums