2011-07-12 21 views
18

W jaki sposób można zapisać wartość wyliczenia w słowniku?Zapisywanie wartości wyliczonych w słowniku

Kiedy próbuję następujące

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

enum someEnum someEnumObject; 

i próbuję zapisać go do słownika za pomocą

[NSDictionary dictionaryWithObjectsAndKeys:]

someEnumObject, @"enum", 

otrzymuję ten

ostrzeżenie: semantyczna Problem: Niezgodny całkowitą konwersją wskaźnik wysyłania „zachowanie enum” z parametrem typu „id”

Odpowiedz

47

Użyj następujących czynności, aby zapisać go do słownika,

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

I można odzyskać jak

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

enum jest zasadniczo liczbą całkowitą i an NSDictionary przechowuje obiekty, więc trzeba konwertować enum do obiektu. NSNumber będzie działać dobrze na to:

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

lepiej wykorzystać NSNumber literały do Konwertuj wyliczenie na obiekt, aby można było go zapisać w NSDictionary:

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

Literówki zapewnić Shorthands pisać rzeczy, słownik ten można zapisać następująco:

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

Więcej o literały tutaj: http://clang.llvm.org/docs/ObjectiveCLiterals.html

Powiązane problemy