在XML中存儲枚舉並將其重新讀出的最簡單方法是什麼?說我有:在C枚舉和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];
}
Yuck!這讓我厭惡。至少要有一種更清晰的閱讀方式,或者可能是一種統一的閱讀和寫作方式?
我使用的是Obj-C和Cocoa,但我不介意一些純粹的C函數。如果是唯一的方法,我甚至會使用預處理器的東西。
好主意保持頭文件中的枚舉和字符串序列。有些東西讓我困擾着將它們變成NSArray方法,但我可能會這樣做。謝謝! – andyvn22 2009-08-07 08:55:18
定義的檢查功能在哪裏? – zekel 2010-05-18 15:30:09
檢查在AssertMacros.h中定義,以及verify,require和變量_noerr,_action,_quiet,_string。他們應該經常撒在你的代碼中,這樣你才能在你的用戶之前找到你的錯誤。 – 2010-05-19 07:04:00