我正在尝试使用NSLog显示存储特定enum值的值。在以下示例中,我尝试将输出设置为:5 represents month of May
。
知道使用NSLog的enum
什么是正确的令牌?我尝试使用%i和%@,但两者都不起作用。
谢谢!
enum month {jan = 1, feb, march, apr, may, jun, jul, aug, sep, oct, nov, dec};
enum month amonth;
int x = 5;
amonth = x;
NSLog(@"%i represents month of %@", x,amonth);
答案 0 :(得分:9)
不幸的是,你所要求的是不可能的。枚举名称在编译之后不会保留(编译器可用的调试信息除外)。因此,除非您想要a)在您的应用程序中发布调试信息,并且b)在您的应用程序中有效编写使用嵌入式调试信息的调试器,否则它将无法正常工作。
此问题的典型解决方案是使用switch
语句提供返回相应名称的函数。
NSString *monthName(enum month m) {
switch (m) {
case jan:
return @"jan";
case feb:
return @"feb";
...
}
return @"unknown";
}
这种方法的一个好处是可以对名称进行本地化。