我试图使用NSLog显示存储特定枚举值的值.在下面的示例中,我尝试将输出作为:5 represents month of May.
知道什么是用于enumNSLog 的正确令牌?我尝试使用%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);
Run Code Online (Sandbox Code Playgroud)
不幸的是,你所要求的是不可能的.枚举名称在编译之后不会保留(编译器可用的调试信息除外).因此,除非您想要a)在您的应用程序中发布调试信息,并且b)在您的应用程序中有效地编写使用嵌入式调试信息的调试器,否则它将无法工作.
此问题的典型解决方案是使用switch语句提供返回适当名称的函数.
NSString *monthName(enum month m) {
switch (m) {
case jan:
return @"jan";
case feb:
return @"feb";
...
}
return @"unknown";
}
Run Code Online (Sandbox Code Playgroud)
这种方法的一个好处是您可以本地化名称.