将枚举值保存到字典中

use*_*578 20 iphone objective-c nsdictionary ios

如何将枚举值保存到字典?

当我尝试以下

enum someEnum
{
    field0 = 0,
    field1 = 1,
    field2 = 2,
};

enum someEnum someEnumObject;
Run Code Online (Sandbox Code Playgroud)

我试着用它将它保存到字典中

[NSDictionary dictionaryWithObjectsAndKeys:]

someEnumObject, @"enum", 
Run Code Online (Sandbox Code Playgroud)

我明白了

警告:语义问题:不兼容的整数到指针转换将'枚举行为'发送到'id'类型的参数

Emp*_*ack 49

使用以下命令将其保存到字典中,

[NSNumber numberWithInt:enumValue], @"enum",
Run Code Online (Sandbox Code Playgroud)

你可以检索它,

enumValue = [[dictionary valueForKey:@"enum"] intValue];
Run Code Online (Sandbox Code Playgroud)


jar*_*ora 10

最好使用NSNumber文字将枚举转换为对象,以便它可以存储在NSDictionary中:

[NSDictionary dictionaryWithObjectsAndKeys:@(someEnumObject), @"enum", nil];
Run Code Online (Sandbox Code Playgroud)

文字提供写东西的缩写,这个字典可以写成:

@{@"enum":@(someEnumObject)};
Run Code Online (Sandbox Code Playgroud)

在这里阅读更多关于文字的内容:http: //clang.llvm.org/docs/ObjectiveCLiterals.html


hig*_*ted 8

An enum本质上是一个整数并NSDictionary存储对象,因此您需要将枚举转换为对象.一个NSNumber适合这个:

[NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithInt:someEnumObject], @"enum", nil];
Run Code Online (Sandbox Code Playgroud)