Conversão entre enum e XML
Qual é a maneira mais limpa de armazenar um enum em XML e lê-lo novamente? Diga que eu tenho:
enum ETObjectType {ETNormalObjectType, ETRareObjectType, ETEssentialObjectType};
... e eu quero pegar uma variávelenum ETObjectType objectType = ETNormalObjectType;
, e convertê-lo para XML que se parece com isso:<objectType>ETNormalObjectType</objectType>
.
Atualmente o que estou fazendo é algo assim:
NSString* const ETObjectTypeAsString[] = {@"ETNormalObjectType",@"ETRareObjectType",@"ETEssentialObjectType"};
[anXMLElement addChild:[NSXMLElement elementWithName:@"objectType" stringValue:ETObjectTypeAsString[objectType]]];
... mas isso não é inteiramente ideal; Eu não estou feliz em atualizar ambas as listas toda vez que eu mudo o meu enum. Mas é aceitável. Muito, muito pior é a leitura de XML de volta, para o qual estou fazendo atualmente isso:
if ([[[anXMLElement childNamed:@"objectType"] stringValue] isEqualToString:@"ETRareObjectType"])
{
[self initObjectType:ETRareObjectType];
}
else if ([[[anXMLElement childNamed:@"objectType"] stringValue] isEqualToString:@"ETEssentialObjectType"])
{
[self initObjectType:ETEssentialObjectType];
}
else
{
[self initObjectType:ETNormalObjectType];
}
Que nojo! Isso me enoja. Tem que haver uma maneira mais limpa de ler, pelo menos, ou talvez uma maneira unificada de ler e escrever?
Estou usando o Obj-C e o Cocoa, mas não me importaria com algumas funções C puras. Eu até usaria material pré-processador, se é o único jeito.