Objective-C 枚舉類型和字符串互轉方案


原文轉自  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])

 

缺點呢, 可能會導致最終編譯的文件會大那么一點點吧.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM