Você pode colocar primitivos em um NSArray ou NSDictionary empacotando-os com a sintaxe @ (). Por exemplo:
typedef enum {
MyEnumOne,
MyEnumTwo
} MyEnum
NSDictionary *dictionary = @{
@(MyEnumOne) : @"one",
@(MyEnumTwo) : @"two"
};
Mas como você usa isso com enumeração rápida? Por exemplo, algo como:
for (MyEnum enum in dictionary) {
...
}
Isso resulta no erro Selector element type "MyEnum" is not a valid object
Respostas:
1 para resposta № 1o @()
sintaxe cria um encaixotado NSNumber. Portanto, ao enumerar, acesse-o como um NSNumber. Para lançá-lo de volta para um enum, extraia primeiro o valor inteiro, depois lance:
for (NSNumber *number in dictionary) {
MyEnum myEnum = (MyEnum)[number intValue];
...
}