美文网首页
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