2

SomeClass.hのクラス外で定義された定数があります:

extern NSString *const SCImportantString;

@interface SomeClass

@end

そしてそれをSomeClass.mで割り当てます:

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

@implementation SomeClass

@end

名前の付いた文字列でこの外部定数にアクセスする方法はありますか?valueForKey:これは、メソッドを使用するクラス変数とインスタンス変数で可能であることを私は知っています。

さまざまなビルド構成を使用しているときにこれを行うと非常に便利です。

4

1 に答える 1

2

あなたが言っていることを取得する場合、文字列からconstポインタ値を取得する組み込みの方法はありません...したがって、NSConstantFromName(@ "xy)はありません

あなたはそれを自分ですることができます

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

または、多くの場合、静的なdictがあります...ローカライズ可能なものも機能するように:

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

    return dict[name];
}
于 2012-12-14T17:21:32.700 に答える