【发布时间】:2018-04-20 18:06:14
【问题描述】:
我是 Objective C 的新手(来自 Java 世界)。
我正在尝试创建一个常量头文件,它可以允许类使用静态常量、静态枚举和静态字典。
这是 Constants.h 的伪代码
extern NSString* const WelcomeMessage;
typedef enum {
RED,
GREEN,
ORANGE
} Color;
//Use the above Color Enum values as keys to map each color to a message String.
NSDictionary *colorMapper= [NSDictionary dictionaryWithObjectsAndKeys:
RED, @"Excellent choice. Red is the color of love",
GREEN, @"Can't go wrong with Green. Green is associated with Nature",
ORANGE, @"The color is as sweet as a juicy Floridian Orange"
];
常量.m
...
- (void)printColor:(Color) color
{
NSLog(@"%@", [colorMapper objectForKey:color]);
}
我正在尝试弄清楚如何正确声明静态常量、静态枚举和静态字典,其中键为颜色枚举,值类型为字符串。这是可行的(可以允许静态枚举和以枚举为键的字典)吗?如果没有,是否有任何替代方法来实现此行为?
【问题讨论】:
-
除了只能在运行时分配的字典之外的所有东西都是可行的。一种替代方法是 RED_MESSAGE、GREEN_MESSAGE 等的另一个枚举,但我认为您正试图避免代码中出现大的 if-else 分支。获得所需内容的唯一方法是放松对数据是静态定义的约束。 (您可以创建一个使用静态标量值初始化的已分配对象)
标签: ios objective-c