Objective-C 枚举类型和字符串互转方案
2015-07-08 18:30
531 查看
枚举类型的使用优势没啥好说的。但经常需要将它与字串进行转换方便显示或其它需求。
在常见的方案中,多是先声明,然后在实现文件里创建一个映射表。这样带来的问题就是要分两个文件来管理,带来管理不方便不好。使用前还在确保映射表已经初始化。显然使用时还是有些许难受。
如果全部改用宏来实现则会好管理很多,而且对于映射表可以采用惰性初始化原则,即只有访问到时才创建。
在常见的方案中,多是先声明,然后在实现文件里创建一个映射表。这样带来的问题就是要分两个文件来管理,带来管理不方便不好。使用前还在确保映射表已经初始化。显然使用时还是有些许难受。
如果全部改用宏来实现则会好管理很多,而且对于映射表可以采用惰性初始化原则,即只有访问到时才创建。
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])
相关文章推荐
- OC-继承-初始化方法-便利构造器(练习题-打僵尸)
- [Objective-C] send message 和 call method 的区别
- Three Sources of a Solid Object-Oriented Design
- Objective-C Runtime中的并发内存分配
- Objective-C Runtime
- Objective-C Runtime
- Objective-C Runtime
- Objective-C Associated Objects 的实现原理
- 论文提要“You Only Look Once: Unified, Real-Time Object Detection”
- java中object常用方法
- [Objective-C] 目标文件反编译得到Objecitve-C源文件
- JSONObject基本内容(三)
- Objective-C之定义函数
- reason: '* -[NSCFArray insertObject:atIndex:]: mutating method sent to immutable object'
- Serializable:writeObject/readObject有的限制?
- 身份证验证
- Object-c 纯手写方法CRC8,16,32,跟我用笔计算的一样,不过跟那些代码算法结果32位的不同
- Objective-C属性赋值过程
- Objective-C对象模型及应用
- Objective-C对象模型及应用