Objective-C中将枚举转换成NSString的一种思路
2015-11-13 02:14
656 查看
Objective-C中经常需要将枚举转换成对应的字符串类型。
这里提供一种思路,可以少写很多代码。
灵活利用C宏中的#来字符串化操作。(#在C中表示将之后的传入参数当作字符串处理,相当给参数左右加了“”)
#define ENUM_TO_CSTR_CASE(enumType) case enumType:
return(#enumType);
那么在实际代码中,先将枚举类型转换成C字符串,然后再将C字符串转换成NSString就行了。
贴上部分代码:
typedef enum : NSUInteger {
enumType1,
enumType2,
enumType3,
} enumType;
const char *cEnumStr(enumType type) {
switch (type) {
ENUM_TO_CSTR_CASE(enumType1)
ENUM_TO_CSTR_CASE(enumType2)
ENUM_TO_CSTR_CASE(enumType3)
default:break;
}
NSString *enumStr = [NSString stringWithCString:cEnumStr(enumType1) encoding:NSASCIIStringEncoding];
这里提供一种思路,可以少写很多代码。
灵活利用C宏中的#来字符串化操作。(#在C中表示将之后的传入参数当作字符串处理,相当给参数左右加了“”)
#define ENUM_TO_CSTR_CASE(enumType) case enumType:
return(#enumType);
那么在实际代码中,先将枚举类型转换成C字符串,然后再将C字符串转换成NSString就行了。
贴上部分代码:
typedef enum : NSUInteger {
enumType1,
enumType2,
enumType3,
} enumType;
const char *cEnumStr(enumType type) {
switch (type) {
ENUM_TO_CSTR_CASE(enumType1)
ENUM_TO_CSTR_CASE(enumType2)
ENUM_TO_CSTR_CASE(enumType3)
default:break;
}
NSString *enumStr = [NSString stringWithCString:cEnumStr(enumType1) encoding:NSASCIIStringEncoding];
相关文章推荐
- Objective-c:数据类型
- OC中的成员变量
- Objective-c:封装、继承与多态
- OBjectve-c 基本数据类型 总结
- objective-c UIImageView
- Objective-c 手写UIDatePicker
- Objective-C 程序设计 第十二章
- Error While Loading Shared Libraries, Cannot Open Shared Object File
- C++::增加目标码(object code)的大小的操作
- Cannot locate the chosen ObjectFactory implementation: spring - [unknown locati
- struts2中的constant介绍之struts.objectFactory与spring的整合
- Objective-C:init初始化
- Objective-数组操作
- Objective-c 字符串处理
- objective-c系列-单例
- Objective-C中的 id, isa,和 instancetype
- objective-c系列-动态类型和动态绑定
- Object-C(OC)内存管理机制详解 (非原创)
- objective-c系列-@Property&点语法
- Objective-C学习—UIWebView的使用