我在头文件中创建了一个如下所示的枚举

typedef enum {stTMD = 1, stT2MD = 2, stDCMD = 'D', stMBMD = 'M'} stTypes;

首先,我什至不确定这是否是在枚举中声明char的正确方法,但是
如您所见,有些值是整数,而另一些是字符。但是,当我尝试将这些值放入NSDicitonary时,出现以下错误
NSDictionary *iCTypes = [[NSDictionary alloc] initWithObjectsAndKeys:stDCMD,@"stMB", stMBMD,@"stMBMD", nil];

但我在下面收到此错误
Implicit conversion of 'int' to 'id' is disallowed with ARC

任何帮助将不胜感激。

最佳答案

enum本质上是int类型。您的enum定义就可以了。问题是您在字典中的使用情况。您需要将enum值包装在NSNumber中。

尝试:

NSDictionary *iCTypes = [[NSDictionary alloc] initWithObjectsAndKeys:[NSNumber numberWithInt:stDCMD], @"stMB", [NSNumber numberWithInt:stMBMD] ,@"stMBMD", nil];

甚至更好(使用现代Objective-C):
NSDictionary *icTypes = @{ @(stDCMD) : @"stMB", @(stMBMD) : @"stMBMD" };

07-27 13:36