Как сохранить значение enum в словаре?
Когда я пробую следующее
enum someEnum { field0 = 0, field1 = 1, field2 = 2, }; enum someEnum someEnumObject;
и я пытаюсь сохранить его в словаре, используя
[NSDictionary dictionaryWithObjectsAndKeys:]
someEnumObject, @"enum",
Я понял
предупреждение: семантическая проблема: несовместимое целочисленное преобразование в указатель, отправляющее «enum поведение» параметру типа «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
enum - это целое число, а NSDictionary хранит объекты, поэтому вам необходимо преобразовать перечисление в объект.Для этого хорошо подойдет NSNumber:
enum
NSDictionary
NSNumber
[NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithInt:someEnumObject], @"enum", nil];