使用枚举时无法使用简写 @n 类型语法实例化 NSNumber?

hel*_*loB 2 enums objective-c nsnumber objective-c-literals

我有一个enum这样的定义:

typedef enum dataTypes{
    LOW,
    MEDIUM,
    HIGH,
    MAX_DATA_TYPE
} dataTypeEnum;
Run Code Online (Sandbox Code Playgroud)

我希望能够像这样实例化一个NSArrayof :NSNumber

NSArray * numsToUse = @[@LOW, @MEDIUM];
Run Code Online (Sandbox Code Playgroud)

这不是编译。有什么见解吗?我是否必须[NSNumber numberWithInt:]为每一个都选择笨重的东西,还是有办法解决这个问题?#define(我出于多种原因考虑并拒绝了这些陈述)。

Rob*_*ier 5

您只需要使用表达式语法:

NSArray * numsToUse = @[@(LOW), @(MEDIUM)];
Run Code Online (Sandbox Code Playgroud)

  • 要添加更多信息 - 不带括号的“@”语法仅适用于数字文字或“BOOL”文字。所有其他数字表达式都需要使用括号。 (5认同)
  • “为什么”是对括号中的表达式进行求值,然后应用 NSNumber 装箱。您也可以执行“@(1+1)”。 (2认同)