作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在尝试使用 NSLog 显示存储在枚举的特定值中的值。在下面的示例中,我尝试获取如下输出:5 表示 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);
最佳答案
很遗憾,您所要求的是不可能的。枚举名称在编译后不会保留(除了作为编译器可用的调试信息)。因此,除非您想要 a) 在您的应用中发送调试信息,并且 b) 在您的应用中有效地编写一个使用嵌入式调试信息的调试器,否则它是行不通的。
此问题的典型解决方案是使用 switch
语句提供一个返回适当名称的函数。
NSString *monthName(enum month m) {
switch (m) {
case jan:
return @"jan";
case feb:
return @"feb";
...
}
return @"unknown";
}
这种方法的一个好处是您可以本地化名称。
关于objective-c - 使用 NSLog 使用枚举数据类型的 token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12012478/
我是一名优秀的程序员,十分优秀!