【问题标题】:Saving enum values into a dictionary将枚举值保存到字典中
【发布时间】:2011-07-12 11:48:00
【问题描述】:

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

当我尝试以下操作时

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

enum someEnum someEnumObject;

我尝试使用

将其保存到字典中

[NSDictionary dictionaryWithObjectsAndKeys:]

someEnumObject, @"enum", 

我明白了

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

【问题讨论】:

    标签: iphone objective-c ios nsdictionary


    【解决方案1】:

    使用以下内容将其保存到字典中,

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

    您可以将其检索为,

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

    【讨论】:

      【解决方案2】:

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

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

      文字提供了写东西的速记,这本字典可以写成:

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

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

      【讨论】:

        【解决方案3】:

        enum 本质上是一个整数,NSDictionary 存储对象,因此您需要将枚举转换为对象。 NSNumber 可以很好地解决这个问题:

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

        【讨论】:

          【解决方案4】:

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2014-09-06
            • 2014-08-07
            • 2013-01-22
            • 1970-01-01
            • 1970-01-01
            • 2011-07-31
            相关资源
            最近更新 更多