将枚举值保存到字典中

时间:2011-07-12 11:48:01

标签: iphone objective-c ios nsdictionary

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

当我尝试以下

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

enum someEnum someEnumObject;

我尝试使用

将其保存到字典中
  

[NSDictionary dictionaryWithObjectsAndKeys:]

someEnumObject, @"enum", 

我明白了

  

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

4 个答案:

答案 0 :(得分:49)

使用以下内容将其保存到词典

[NSNumber numberWithInt:enumValue], @"enum",

您可以将其检索为

enumValue = [[dictionary valueForKey:@"enum"] intValue];

答案 1 :(得分:10)

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

[NSDictionary dictionaryWithObjectsAndKeys:@(someEnumObject), @"enum", nil];

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

@{@"enum":@(someEnumObject)};

在此处阅读有关文字的更多信息:   http://clang.llvm.org/docs/ObjectiveCLiterals.html

答案 2 :(得分:7)

enum本质上是一个整数,NSDictionary存储对象,因此您需要将枚举转换为对象。 NSNumber适用于此:

[NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithInt:someEnumObject], @"enum", nil];

答案 3 :(得分:0)

在现代,@(enumValue)是更简单的方法。