【问题标题】:Objective-C: printing enum valuesObjective-C:打印枚举值
【发布时间】:2014-06-11 02:28:15
【问题描述】:

我试图在 Xcode 上打印出 Objective-C 中的枚举常量。

代码:

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[])
{

    @autoreleasepool {

        enum boolean{
            no, yes
        };

    NSLog(@"%d", yes);


    }

    return 0;

}

我运行了这段代码,控制台显示的所有内容都是“(lldb)”。

是我弄错了语法吗?

或者我在这里遗漏了什么?

另外,我使用 typedef 尝试了不同的方式:

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[])
{

     @autoreleasepool {

          typedef enum {
              no, yes
          } boolean;

         boolean boolVal = yes;

         NSLog(@"%d", boolVal);

     }

     return 0;
}

我怀疑我在使用 NSLog() 打印出值时做错了。

但我尝试过使用 %i、%@、%d。但是输出是一样的,(lldb)。

是否有任何不同的方法可以打印出枚举值?

【问题讨论】:

  • 如果您看到调试器提示,那么您的应用程序崩溃了,或者您设置了断点并且调试器在断点处停止。
  • @rmaddy 是的!语句 NSLog() 在绿色突出显示的行上,标记在右上角,这是“线程 1:断点 3.1”,你知道这是什么意思吗?抱歉,我是 Objective-C 的新手。
  • 删除断点或点击调试器中的“播放”图标继续执行。
  • @rmaddy 谢谢!这就是我一直在寻找的答案! :D

标签: objective-c enums


【解决方案1】:

您必须给enum 的成员值是您想要打印的值。请尝试以下操作。

enum boolean {
    no  = 0,
    yes = 1
};

NSLog(@"yes = %d",yes);

前面的代码输出如下。

yes = 1

【讨论】:

  • @James 这意味着您的错误来自其他地方。
  • 我不明白..你怎么编译它并得到正确的输出而我没有?
  • 好的,我会尝试寻找其他类型的意外错误。
  • @BrianTracy 你不需要给枚举成员赋值。他们将被自动分配编号,从 0 开始。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-19
相关资源
最近更新 更多