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

缺点呢, 可能会导致最终编译的文件会大那么一点点吧.

时间: 2024-10-24 22:54:59

Objective-C 枚举类型和字符串互转方案的相关文章

QT枚举类型与字符串类型相互转换

在QT中将枚举类型注册(QT_Q_ENUM或QT_Q_FLAG)后,就可以利用QT的元对象进行枚举类型与字符串类型转换了. 代码示例: #include <QtCore/QMetaEnum> int main() { QMetaEnum metaEnum = QMetaEnum::fromType<Qt::Alignment>(); //字符串转枚举值 Qt::Alignment alignment = (Qt::Alignment)metaEnum.keyToValue(&quo

006.值类型、引用类型、枚举类型、字符串、冒泡排序

1.二维数组和交错数组 2.参数数组:params 数据类型[]数组名只能有一个参数数组,必须是最后一个参数必须是一堆数组 同时存在其他的重载方法,方法调用时优先调用参数最匹配的,没有直接匹配的参数列表时,才调用带有参数列表的方法 3.类型:值类型:整型 float double decimal bool char 枚举 结构引用类型:string 数组(Array)类 接口 委托 4.枚举访问修饰符 enum 枚举{值1,值2}枚举定义的位置:命名空间和类都可以转换:(枚举类型)Enum.Pa

DateTimeHelper【日期类型与字符串互转以及日期对比相关操作】

版权声明:本文为博主原创文章,未经博主允许不得转载. 前言 实现日期和字符串之间的转换以及日期的相关操作: 1.日期格式的字符串输出为Date类型: 2.将Date类型以指定格式输出: 3.将日期格式的字符串以指定格式输出: 4.将时间戳转化为固定格式的日期字符串 : 5.将时间戳转化为指定格式日期的字符串: 6.当前时间提前一个月: 7.当前时间延后一个月: ...... 效果图 暂不需要 代码分析 注意:new SimpleDateFormat的构造函数中必须含有Locale.CHINA或者

【转】掌握java枚举类型(enum type)

原文网址:http://iaiai.iteye.com/blog/1843553 1   背景 在java语言中还没有引入枚举类型之前,表示枚举类型的常用模式是声明一组具有int常量.之前我们通常利用public final static 方法定义的代码如下,分别用1 表示春天,2表示夏天,3表示秋天,4表示冬天. Java代码   public class Season { public static final int SPRING = 1; public static final int 

xe6输出枚举类型每项字符串

1 unit Unit1; 2 3 interface 4 5 uses 6 Winapi.Windows, 7 Winapi.Messages, 8 System.SysUtils, 9 System.Variants, 10 System.Classes, 11 Vcl.Graphics, 12 Vcl.Controls, 13 Vcl.Forms, 14 Vcl.Dialogs, 15 Vcl.StdCtrls, 16 codesitelogging, 17 TypInfo; 18 19

c++名字空间,C与C++字符串的区别,枚举类型

1:命名空间2:C与C++字符串的区别和基本操作3:枚举类型命名空间#include <string> #include <ctype.h> #include <vector> #include <iostream> #include <fstream> // using declarations states our intent to use these names from the namespace std using namespace

C#学习笔记(隐式和显式转化、枚举类型、结构类型、数组类型和字符串)

1 类型转换 1.1 隐式转换:从类型A到类型B的转换可以在所有情况下进行,执行转换的规则非常简单,可以让编译器执行转换. ushort destinationVar; char sourceVar = 'a'; destinationVar = sourceVar; Console.WirteLine("soueceVar Val:{0}",sourceVar); Console.wirteLine("destination Val:{0}",destinatio

WebService中使用枚举类型

1.在服务端编写枚举值 public enum BackWorkType { None, Test } 2.为每一个枚举值添加下面属性,添加下面属性后服务可以通过对象字符串进行序列化 [EnumMember(Value = "None")] 3.添加完后枚举变成 public enum BackWorkType { [EnumMember(Value = "None")] None, [EnumMember(Value = "Test")] Te

C# 获取与解析枚举类型的 DescriptionAttribute

原文:C# 获取与解析枚举类型的 DescriptionAttribute System.ComponentModel.DescriptionAttribute 这个 Attribute,经常被用来为属性或事件提供说明,这个说明是可以被本地化的.在一些用户界面中,就可以利用这个 Attribute 提供一些额外的信息,就像 Visual Studio 中所做的,如图 1 所示: 图 1 可以看到,对 AutoSizeMode 的说明,被显示在了下面的框中. 但是,界面中的枚举项就没这么好的待遇了