Ответ 1
Используйте следующее, чтобы сохранить его в словаре,
[NSNumber numberWithInt:enumValue], @"enum",
И вы можете получить его как,
enumValue = [[dictionary valueForKey:@"enum"] intValue];
Как сохранить значение перечисления в словаре?
Когда я попробую следующее
enum someEnum
{
field0 = 0,
field1 = 1,
field2 = 2,
};
enum someEnum someEnumObject;
и я пытаюсь сохранить его в словаре, используя
[Словарь NSDictionaryWithObjectsAndKeys:]
someEnumObject, @"enum",
Я получаю это
warning: Semantic Issue: несовместимое целое число для преобразования указателя, отправляющего 'enum behavior' в параметр типа 'id'
Используйте следующее, чтобы сохранить его в словаре,
[NSNumber numberWithInt:enumValue], @"enum",
И вы можете получить его как,
enumValue = [[dictionary valueForKey:@"enum"] intValue];
Лучше использовать литералы NSNumber для преобразования перечисления в объект, чтобы его можно было сохранить в NSDictionary:
[NSDictionary dictionaryWithObjectsAndKeys:@(someEnumObject), @"enum", nil];
Литералы предоставляют сокращения для написания материала, этот словарь можно написать так:
@{@"enum":@(someEnumObject)};
Подробнее о литералах читайте здесь: http://clang.llvm.org/docs/ObjectiveCLiterals.html
An enum
по существу является целым числом, а NSDictionary
хранит объекты, поэтому вам нужно преобразовать ваше перечисление в объект. NSNumber
будет хорошо работать для этого:
[NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithInt:someEnumObject], @"enum", nil];
В наше время @(enumValue)
является более легким подходом.