且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

让枚举值与字符串一一对应

更新时间:2022-06-03 01:50:44

让枚举值与字符串一一对应

让枚举值与字符串一一对应

 

说明

统一管理字符串,可以用数值来代表字符串,其目的就是为了增加代码的可读性.

 

源码

https://github.com/YouXianMing/StringAndValue



//
//  StringAndValue.h
//  StringAndValue
//
//  Created by YouXianMing on 15/6/9.
//  Copyright (c) 2015年 YouXianMing. All rights reserved.
//

#import <Foundation/Foundation.h>

#define E_STRING(value)   [StringAndValue stringValueWithEStringAndValue:(value)]
#define E_VALUE(value)    [StringAndValue numberValueWithEStringAndValue:(value)]


typedef enum : NSUInteger {
    
    EUserSucess,
    EUserError,
    
} EStringAndValue;


@interface StringAndValue : NSObject

/**
 *  获取数值
 *
 *  @param value 枚举值
 *
 *  @return 数值
 */
+ (EStringAndValue)numberValueWithEStringAndValue:(EStringAndValue)value;

/**
 *  获取数值对应的字符串
 *
 *  @param value 枚举值
 *
 *  @return 字符串
 */
+ (NSString *)stringValueWithEStringAndValue:(EStringAndValue)value;

@end


//
//  StringAndValue.m
//  StringAndValue
//
//  Created by YouXianMing on 15/6/9.
//  Copyright (c) 2015年 YouXianMing. All rights reserved.
//

#import "StringAndValue.h"

static NSDictionary *_dataStringAndValue = nil;

@implementation StringAndValue

+ (void)initialize {
    
    if (self == [StringAndValue class]) {
        
        _dataStringAndValue = @{@(EUserSucess) : @"成功",
                                @(EUserError)  : @"失败",};
    }
}

+ (EStringAndValue)numberValueWithEStringAndValue:(EStringAndValue)value {

    return value;
}

+ (NSString *)stringValueWithEStringAndValue:(EStringAndValue)value {
    
    return _dataStringAndValue[@(value)];
}

@end


//
//  ViewController.m
//  StringAndValue
//
//  Created by YouXianMing on 15/6/9.
//  Copyright (c) 2015年 YouXianMing. All rights reserved.
//

#import "ViewController.h"
#import "StringAndValue.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];

    NSLog(@"%@", E_STRING(EUserError));
    NSLog(@"%lu", (unsigned long)EUserError);
}

@end

重要的地方

让枚举值与字符串一一对应