我正在尝试NSLog我的一些枚举。例如,这段代码打印枚举的整数表示,但我希望它输出实际的字符串名称,在本例中为MON。我怎么能这样做?
#import <Foundation/Foundation.h>
int main(void)
{
typedef enum {
SUN,
MON,
TUES
} DAYS;
DAYS d = MON;
NSLog(@"%@", d);
return 0;
}
答案 0 :(得分:21)
LLDB调试器将显示字符串标识符。因此,您可以使用带有调试器命令操作的断点(在您的情况下为“p d”)而不是使用NSLog,并将断点设置为在评估后自动继续。
您可以通过右键单击蓝色标记来配置断点。
答案 1 :(得分:9)
不容易。枚举值的字符串标识符是针对开发人员的,但在内部它只是具有特定类型的值(在您的示例中为DAYS
)。
您可以编写一个翻译方法,以返回枚举值的名称,例如
- (NSString*)nameForDay:(DAYS)day {
switch (day) {
case SUN:
return @"SUN";
break;
case MON:
return @"MON";
break;
case TUES:
return @"TUES";
break;
default:
return nil;
break;
};
return nil;
}
这是一种令人讨厌的方式,因为它不能完全恢复枚举值的变化,但它是一种将字符串与枚举值相关联的方法。