快速将 NS_ENUM 转换成 NSString

Yourtion 创作于:2015-12-23     全文约 839 字, 预计阅读时间为 3 分钟

在项目中经常会用到 NS_ENUM 来保存枚举数据,但是做网络请求时候可能又需要相应的字符串来作为参数,一开始使用一个方法,把枚举传入后进行 switch case,但是实现起来不优雅又容易出错,这里分享一个简单的方法,希望对你有帮助。

假设枚举类型 TestType 定义如下:

typedef NS_ENUM(NSInteger, TestType) {
    TestTypeA = 0,
    TestTypeB,
    TestTypeC
};

原有转换方法:

+(NSString *)getTestTypeString:(TestType)t {
    NSString *result = nil;
    switch(t) {
        case TestTypeA:
            result = @"TypeA";
            break;
        case TestTypeB:
            result = @"TypeB";
            break;
        case TestTypeC:
            result = @"TypeC";
            break;
        default:
            result = @"unknown";
    }
    return result;
}

通过定义一个 const NSString,可以将转换方法简化如下:

NSString * const TestTypeDescription[] = {
    [TestTypeA] = @"TypeA",
    [TestTypeB] = @"TypeB",
    [TestTypeC] = @"TypeC"
};

+(NSString *)getTestTypeString:(TestType)t {
    return TestTypeDescription[t];
}

原文链接:https://blog.yourtion.com/ns_enum_to_nsstring.html