如何将枚举值保存到字典?
当我尝试以下
时enum someEnum
{
field0 = 0,
field1 = 1,
field2 = 2,
};
enum someEnum someEnumObject;
我尝试使用
将其保存到字典中[NSDictionary dictionaryWithObjectsAndKeys:]
someEnumObject, @"enum",
我明白了
警告:语义问题:不兼容的整数到指针转换将'枚举行为'发送到'id'类型的参数
答案 0 :(得分:49)
使用以下内容将其保存到词典
[NSNumber numberWithInt:enumValue], @"enum",
您可以将其检索为
enumValue = [[dictionary valueForKey:@"enum"] intValue];
答案 1 :(得分:10)
更好地使用NSNumber文字将枚举转换为对象,以便它可以存储在NSDictionary中:
[NSDictionary dictionaryWithObjectsAndKeys:@(someEnumObject), @"enum", nil];
文字提供写东西的简写,这个字典可以写成:
@{@"enum":@(someEnumObject)};
在此处阅读有关文字的更多信息: http://clang.llvm.org/docs/ObjectiveCLiterals.html
答案 2 :(得分:7)
enum
本质上是一个整数,NSDictionary
存储对象,因此您需要将枚举转换为对象。 NSNumber
适用于此:
[NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithInt:someEnumObject], @"enum", nil];
答案 3 :(得分:0)
在现代,@(enumValue)
是更简单的方法。