2011-07-12 94 views
18

如何將枚舉值保存到字典中?將枚舉值保存到字典中

當我嘗試以下方法

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

enum someEnum someEnumObject; 

,我嘗試使用

[NSDictionary的dictionaryWithObjectsAndKeys:]將其保存到一個字典

someEnumObject, @"enum", 

我得到這個

警告:語義問題:不兼容的整數指針轉換髮送「枚舉行爲爲鍵入「身份證」

回答

47

使用下列步驟將其保存到字典,

[NSNumber numberWithInt:enumValue], @"enum", 

你可以檢索它,

enumValue = [[dictionary valueForKey:@"enum"] intValue]; 
7

enum的參數本質上是一個整數和NSDictionary商店的對象,所以你需要你的轉換枚舉一個對象。一個NSNumber會爲這項工作做得很好:

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

更好地利用NSNumber的文字來將枚舉轉換爲對象,以便它可以存儲在NSDictionary中:

[NSDictionary dictionaryWithObjectsAndKeys:@(someEnumObject), @"enum", nil]; 

字面的速記法寫的東西,這本詞典可以這樣寫:

@{@"enum":@(someEnumObject)}; 

瞭解更多有關文字在這裏: http://clang.llvm.org/docs/ObjectiveCLiterals.html