zoukankan      html  css  js  c++  java
  • 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])
    复制代码
    缺点呢, 可能会导致最终编译的文件会大那么一点点吧.
     
     
  • 相关阅读:
    Linux常用命令-学习笔记
    Linux 输入输出重定向
    Linux 网卡配置参数
    JS Promise对象学习
    Linux用户身份与文件权限学习笔记
    4、点击事件
    3、自定义按压效果
    2、自定义背景形状
    1、文字大小,颜色
    5、跑马灯
  • 原文地址:https://www.cnblogs.com/lee4519/p/4316336.html
Copyright © 2011-2022 走看看