Преобразование между 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. Я'я бы даже использовал препроцессор, если этоЭто единственный способ.

Ответы на вопрос(5)

Ваш ответ на вопрос