Hua*_*ang 17 enums objective-c
我正在尝试NSLog我的一些枚举.例如,这段代码打印枚举的整数表示,但我希望它输出实际的字符串名称,在本例中为MON.我怎样才能做到这一点?
#import <Foundation/Foundation.h>
int main(void)
{
typedef enum {
SUN,
MON,
TUES
} DAYS;
DAYS d = MON;
NSLog(@"%@", d);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
tom*_*tom 21
LLDB调试器将显示字符串标识符.因此,您可以使用带有调试器命令操作的断点(在您的情况下为"p d")而不是使用NSLog,并将断点设置为在评估后自动继续.
您可以通过右键单击蓝色标记来配置断点.
不容易.枚举值的字符串标识符适用于开发人员,但在内部它只是具有特定类型的值(在您的示例中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;
}
Run Code Online (Sandbox Code Playgroud)
这是一种讨厌的方式,因为它不能完全恢复枚举值的变化,但它是一种将字符串与枚举值相关联的方法.
| 归档时间: |
|
| 查看次数: |
12296 次 |
| 最近记录: |