Objective c Can';使用枚举时,是否使用速记@n类型语法实例化NSNumber?

Objective c Can';使用枚举时,是否使用速记@n类型语法实例化NSNumber?,objective-c,enums,nsnumber,objective-c-literals,Objective C,Enums,Nsnumber,Objective C Literals,我有一个enum定义如下: typedef enum dataTypes{ LOW, MEDIUM, HIGH, MAX_DATA_TYPE } dataTypeEnum; 我希望能够实例化NSNumbers的NSArray,如下所示: NSArray * numsToUse = @[@LOW, @MEDIUM]; 这不是编译。有什么见解吗?我是否必须使用笨重的[NSNumber numberWithInt::来处理这些问题,还是有办法解决这些问题?(我考虑并

我有一个
enum
定义如下:

typedef enum dataTypes{
    LOW,
    MEDIUM,
    HIGH,
    MAX_DATA_TYPE
} dataTypeEnum;
我希望能够实例化
NSNumber
s的
NSArray
,如下所示:

NSArray * numsToUse = @[@LOW, @MEDIUM];

这不是编译。有什么见解吗?我是否必须使用笨重的
[NSNumber numberWithInt::
来处理这些问题,还是有办法解决这些问题?(我考虑并拒绝了
#define
语句,原因有很多)。

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

NSArray * numsToUse = @[@(LOW), @(MEDIUM)];

要添加更多信息,不带括号的
@
语法仅适用于数字文字或
BOOL
文字。所有其他数值表达式都需要使用括号。“为什么”是指在括号中对表达式求值,然后应用NSNumber装箱。您也可以执行
@(1+1)
。感谢你们两位的澄清!我想补充一点,不带括号的
@
语法也适用于定义为文字编号的宏。您应该使用
typedef NS_ENUM(NSInteger,DataTypeEnum){..}
来定义枚举。@orkoden有什么区别,为什么NS_ENUM更可取?tl:dr更好的代码完成,更好的编译器类型信息,更好的快速互操作