Подтвердить что ты не робот

Сохранение значений enum в словаре

Как сохранить значение перечисления в словаре?

Когда я попробую следующее

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

enum someEnum someEnumObject;

и я пытаюсь сохранить его в словаре, используя

[Словарь NSDictionaryWithObjectsAndKeys:]

someEnumObject, @"enum", 

Я получаю это

warning: Semantic Issue: несовместимое целое число для преобразования указателя, отправляющего 'enum behavior' в параметр типа 'id'

4b9b3361

Ответ 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

An enum по существу является целым числом, а NSDictionary хранит объекты, поэтому вам нужно преобразовать ваше перечисление в объект. NSNumber будет хорошо работать для этого:

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

Ответ 4

В наше время @(enumValue) является более легким подходом.