将枚举值保存到字典中
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)
是更简单的方法。
【讨论】:
以上是关于将枚举值保存到字典中的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Cloudkit 将字典(或任何其他复杂结构)保存到 iCloud 中?
从python字典如何将键和值保存到* .txt文件[关闭]