原文轉自 http://www.rijiyuelei.me/2012/09/enum-and-string-conversion-in-objective-c/
枚舉類型的使用優勢沒啥好說的。但經常需要將它與字串進行轉換方便顯示或其它需求。
在常見的方案中,多是先聲明,然后在實現文件里創建一個映射表。這樣帶來的問題就是要分兩個文件來管理,帶來管理不方便不好。使用前還在確保映射表已經初始化。顯然使用時還是有些許難受。
如果全部改用宏來實現則會好管理很多,而且對於映射表可以采用惰性初始化原則,即只有訪問到時才創建。
enum DPodRecordType{ DPodRecordTypeA = 0, DPodRecordTypeCNAME, DPodRecordTypeMX, DPodRecordTypeTXT, DPodRecordTypeNS,
DPodRecordTypeAAAA, DPodRecordTypeSRV, DPodRecordTypeURL }; typedef enum DPodRecordType DPodRecordType; const NSArray *___DPodRecordType; // 創建初始化函數。等於用宏創建一個getter函數 #define cDPodRecordTypeGet (___DPodRecordType == nil ? ___DPodRecordType = [[NSArray alloc] initWithObjects:\ @"A",\ @"CNAME",\ @"MX",\ @"TXT",\ @"NS",\ @"AAAA",\ @"SRV",\ @"URL", nil] : ___DPodRecordType) // 枚舉 to 字串 #define cDPodRecordTypeString(type) ([cDPodRecordTypeGet objectAtIndex:type]) // 字串 to 枚舉 #define cDPodRecordTypeEnum(string) ([cDPodRecordTypeGet indexOfObject:string])
