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