让枚举值与字符串一一对应
说明
统一管理字符串,可以用数值来代表字符串,其目的就是为了增加代码的可读性.
源码
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
重要的地方