将枚举值保存到字典中

Posted

技术标签:

【中文标题】将枚举值保存到字典中【英文标题】:Saving enum values into a dictionary 【发布时间】:2011-07-12 11:48:00 【问题描述】:

如何?

当我尝试以下操作时

enum someEnum

    field0 = 0,
    field1 = 1,
    field2 = 2,
;

enum someEnum someEnumObject;

我尝试使用

将其保存到字典中

[NSDictionary dictionaryWithObjectsAndKeys:]

someEnumObject, @"enum", 

我明白了

警告:语义问题:不兼容的整数到指针转换将“枚举行为”发送到“id”类型的参数

【问题讨论】:

【参考方案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】:

enum 本质上是一个整数,NSDictionary 存储对象,因此您需要将枚举转换为对象。 NSNumber 可以很好地解决这个问题:

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

【讨论】:

【参考方案4】:

在现代@(enumValue) 是更简单的方法。

【讨论】:

以上是关于将枚举值保存到字典中的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Hibernate 将枚举值保存到 DB?

如何使用 Cloudkit 将字典(或任何其他复杂结构)保存到 iCloud 中?

从python字典如何将键和值保存到* .txt文件[关闭]

如何将字典保存到文件中?

将字典保存到文件(numpy 和 Python 2/3 友好)

如何在数据库室中保存枚举字段?