標籤:
原文轉自 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])
缺點呢, 可能會導致最終編譯的檔案會大那麼一點點吧.
Objective-C 枚舉類型和字串互轉方案