Преобразование между C enum и XML
Какие'самый чистый способ сохранить перечисление в XML и снова прочитать его? Скажи яу нас есть:
enum ETObjectType {ETNormalObjectType, ETRareObjectType, ETEssentialObjectType};
... и я хочу взять переменную,enum ETObjectType objectType = ETNormalObjectType;
и преобразовать его в XML, который выглядит следующим образом:ETNormalObjectType
Сейчас яЯ делаю что-то вроде этого:
NSString* const ETObjectTypeAsString[] = {@"ETNormalObjectType",@"ETRareObjectType",@"ETEssentialObjectType"};
[anXMLElement addChild:[NSXMLElement elementWithName:@"objectType" stringValue:ETObjectTypeAsString[objectType]]];
...но это'не совсем идеально; Я'Я не рад обновлять оба списка каждый раз, когда меняю свое перечисление. Но это'приемлемо. Гораздо хуже, когда мы читаем XML обратно, для чего я сейчас и делаю:
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];
}
Тьфу! Это отвратительно меня. Там'Должен ли быть, по крайней мере, более чистый способ чтения или, возможно, унифицированный способ чтения и записи?
я использую Obj-C и какао, но я бы не сталне возражаю против некоторых чистых функций C. Я'я бы даже использовал препроцессор, если этоЭто единственный способ.