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

2016-06-06  本文已影响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])

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

上一篇 下一篇

猜你喜欢

热点阅读