Saving enum values into a dictionary
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.
user773578
Updated on June 16, 2022Comments
-
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'