Objective-C - 使用包含其名称的字符串访问extern const?

时间:2012-12-14 17:16:03

标签: objective-c const extern static-variables

我在SomeClass.h中有一个常量定义的类:

extern NSString *const SCImportantString;

@interface SomeClass

@end

并在SomeClass.m中分配:

NSString *const SCImportantString = @"All your base are belong to us.";

@implementation SomeClass

@end

有没有办法通过名称字符串访问此extern常量?我知道使用valueForKey:方法可以使用类和即时变量。

使用不同的构建配置时,这样做非常有用。

1 个答案:

答案 0 :(得分:2)

如果得到你所说的没有内置方法从字符串中获取const指针值...所以没有NSConstantFromName(@“xy)

你可以自己做吧

NSString *const SCConstantByName(NSString *name) {
    if[(name isEqualToString:@"SCImportantString"])
        return SCImportantString;
}

或者许多人都有静态字典...就像本地化也可以工作:

NSString *const SCConstantByName(NSString *name) {
    id dict = nil;
    if(!dict) {
        dict = @{@"SCImportantString", SCImportantString};

    return dict[name];
}