美文网首页
iOS中枚举和字符串的相互转化

iOS中枚举和字符串的相互转化

作者: 落小絮 | 来源:发表于2016-06-06 16:59 被阅读0次

原文转自  http://www.rijiyuelei.me/2012/09/enum-and-string-conversion-in-objective-c/

在常见的方案中,多是先声明,然后在实现文件里创建一个映射表。这样带来的问题就是要分两个文件来管理,带来管理不方便。使用前还要确保映射表已经初始化。显然使用时还是有些许难受。如果全部改用宏来实现则会好管理很多,而且对于映射表可以采用懒加载的办法。

typedef enum {

NETWORK_TYPE_NONE = 0,

NETWORK_TYPE_WIFI,

NETWORK_TYPE_3G,

NETWORK_TYPE_2G,

}NETWORK_TYPE;

const NSArray *___NetworkType;

// 创建初始化函数。等于用宏创建一个getter函数

#define NetworkTypeGet (___NetworkType == nil ? ___NetworkType = [[NSArray alloc] initWithObjects:\

@"NONE",\

@"WIFI",\

@"3G",\

@"2G", nil] : ___NetworkType)

// 枚举 to 字串

#defineNetworkTypeString(type) ([NetworkTypeGet objectAtIndex:type])

// 字串 to 枚举

#define NetworkTypeEnum(string) ([NetworkTypeGet indexOfObject:string])

这么写的缺点是编译的时候文件可能会大一点。

相关文章

网友评论

      本文标题:iOS中枚举和字符串的相互转化

      本文链接:https://www.haomeiwen.com/subject/cihfdttx.html