Saving enum values into a dictionary

17,823

Solution 1

Use the following to save it to dictionary,

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

And you can retrieve it as,

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

Solution 2

Better use NSNumber literals to convert an enum to an object so that it can be stored in NSDictionary:

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

Literals provide shorthands to write stuff, this dictionary can be written like:

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

Read more about literals here: http://clang.llvm.org/docs/ObjectiveCLiterals.html

Solution 3

An enum is essentially an integer and an NSDictionary stores objects, so you need to convert your enum to an object. An NSNumber would work well for this:

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

Solution 4

In modern times @(enumValue) is the easier approach.

Share:
17,823
user773578
Author by

user773578

Updated on June 16, 2022

Comments

  • user773578
    user773578 almost 2 years

    How does one save an enum value to a dictionary?

    When I try the following

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

    and I try to save it to a dictionary using

    [NSDictionary dictionaryWithObjectsAndKeys:]

    someEnumObject, @"enum", 
    

    I get this

    warning: Semantic Issue: Incompatible integer to pointer conversion sending 'enum behaviour' to parameter of type 'id'