【发布时间】:2010-05-17 22:27:28
【问题描述】:
我有一个字符串要解析并返回一个等效的枚举。我需要在其他地方使用枚举类型,我想我喜欢我定义它的方式。问题是我不知道一个好方法可以根据枚举值检查字符串,而不会对枚举的顺序造成冗余。
除了大的 if/else 没有别的选择吗?
typedef enum {
ZZColorRed,
ZZColorGreen,
ZZColorBlue,
} ZZColorType;
- (ZZColorType)parseColor:(NSString *)inputString {
// inputString will be @"red", @"green", or @"blue" (trust me)
// how can I turn that into ZZColorRed, etc. without
// redefining their order like this?
NSArray *colors = [NSArray arrayWithObjects:@"red", @"green", @"blue", nil];
return [colors indexOfObject:inputString];
}
在 Python 中,我可能会执行以下操作,但老实说我也不喜欢它。
## maps url text -> constant string
RED_CONSTANT = 1
BLUE_CONSTANT = 2
GREEN_CONSTANT = 3
TYPES = {
'red': RED_CONSTANT,
'green': GREEN_CONSTANT,
'blue': BLUE_CONSTANT,
}
def parseColor(inputString):
return TYPES.get(inputString)
ps。我知道 Cocoa 中有颜色常量,这只是一个例子。
【问题讨论】:
标签: objective-c cocoa coding-style