我有一个包含几个值的枚举:
枚举{value1,value2,value3} myValue;
在我的应用程序中的某个点,我希望检查枚举的哪个值现在处于活动状态.我正在使用NSLog,但我不清楚如何显示枚举的当前值(value1/valu2/valu3/etc ...)作为NSLog的NSString.
任何人?
我经常发现自己编写辅助调试器方法,返回一个可打印的字符串,给定一些枚举值.这样做的原因是当你通常记录枚举时,你得到的只是一个数字.我讨厌不得不回到我的来源找出那个枚举是什么.所以我会做类似的事情
typedef enum
{
kOne = 1,
kTwo,
kThree,
}
MyEnum;
NSString *debugStringForEnum(MyEnum e)
{
switch ( e )
case kOne:
return @"One";
case kTwo:
return @"Two";
....
}
....
NSLog(@"My debug log: %@", debugStringForEnum(someVariable));
Run Code Online (Sandbox Code Playgroud)
所以我的问题是,有没有办法避免编写所有这些帮助代码,只是为了看到枚举的标签值?
谢谢
在Java中,我有一个枚举像:
public enum Toppings {
PEPPERONI,
EXTRA_CHEESE,
SECRET_SAUCE;
@Override
public String toString() {
switch(this) {
case EXTRA_CHEESE: return "Extra Cheese";
case SECRET_SAUCE: return "Secret Sauce™";
}
String name = name();
return name.charAt(0) + name.substring(1, name.length()).replace('_', ' ').toLowerCase();
}
}
Run Code Online (Sandbox Code Playgroud)
我想在Objective-C中重新制作它.到目前为止,我已经这样做了:
NS_ENUM(NSInteger, Toppings) {
PEPPERONI,
EXTRA_CHEESE,
SECRET_SAUCE
};
Run Code Online (Sandbox Code Playgroud)
然后我很难过.我该如何制作toString()方法?我知道它相当复杂并且使用了一些特定于Java的行为,但我确信有一种方法.
我唯一想到的是拥有一个具有此功能的独立助手类,但这看起来有点多,不是吗?
我有一个枚举声明如下:
typedef enum MODE {
FRAMED, HALFPAGED, FULLPAGED
} MODE;
Run Code Online (Sandbox Code Playgroud)
有没有办法将FRAMED/HALFPAGED/FULLPAGED转换为字符串.
我知道C++有能力使用:
static String^ GetName(
Type^ enumType,
Object^ value
)
Run Code Online (Sandbox Code Playgroud)
是否会有Objective-C的等价物?