【问题标题】:Token for using enum data type using NSLog使用 NSLog 使用枚举数据类型的令牌
【发布时间】:2012-08-17 20:02:59
【问题描述】:

我正在尝试使用 NSLog 显示存储特定枚举值的值。在以下示例中,我试图将输出设为: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);

【问题讨论】:

    标签: objective-c enums


    【解决方案1】:

    很遗憾,您的要求是不可能的。枚举名称不会保留过去的编译(编译器可用的调试信息除外)。因此,除非您想 a) 在您的应用程序中提供调试信息,并且 b) 在您的应用程序中有效地编写一个使用嵌入式调试信息的调试器,否则它是行不通的。

    此问题的典型解决方案是提供一个返回适当名称的函数,使用 switch 语句。

    NSString *monthName(enum month m) {
        switch (m) {
            case jan:
                return @"jan";
            case feb:
                return @"feb";
            ...
        }
        return @"unknown";
    }
    

    这种方法的一个好处是您可以本地化名称。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多