【发布时间】:2009-08-07 04:42:23
【问题描述】:
在 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]]];
...但这并不完全理想;每次更改枚举时,我都对更新这两个列表不满意。但这是可以接受的。更糟糕的是读回 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 函数。如果这是唯一的方法,我什至会使用预处理器。
【问题讨论】:
标签: c objective-c xml cocoa enums