1. 程式人生 > >Objective-C 列舉型別和字串互轉方案

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])