10

マクロの方法で、以下のような一連の文字列定数を定義しました。

#define EXT_RESULT_APPID  @"appid"
#define EXT_RESULT_ERROR_CODE  @"errorcode"
#define EXT_RESULT_PROGRESS  @"progress"
...

これらの定数はすべて同じコンテキストで使用されることになっているため、同じ名前空間でそれらを制約したいと思います。また、この投稿で述べたように、それらを global にしたくありません。

一方、すべての数値定数を列挙型に入れることはできますが、文字列では機能しません。次に、これらの関連する文字列定数をグループ化するにはどうすればよいでしょうか?

4

4 に答える 4

29

これが1つのアプローチです:

MONExtResult.h

// add __unsafe_unretained if compiling for ARC
struct MONExtResultStruct {
    NSString * const AppID;
    NSString * const ErrorCode;
    NSString * const Progress;
};

extern const struct MONExtResultStruct MONExtResult;

MONExtResult.m

const struct MONExtResultStruct MONExtResult = {
    .AppID = @"appid",
    .ErrorCode = @"errorcode",
    .Progress = @"progress"
};

使用中で:

NSString * str = MONExtResult.AppID;
于 2012-04-25T10:04:24.677 に答える
0

言うヘッダーファイルを作成しますConstants.h

このファイルにすべての定数を追加します。これらは、プロジェクトの異なるクラスで使用したい定数にすることができます。

#define EXT_RESULT_APPID  @"appid"
#define EXT_RESULT_ERROR_CODE  @"errorcode"
#define EXT_RESULT_PROGRESS  @"progress"

Constants.hここで、これをすべてのクラスにインポートする代わりに、ファイルに移動<project name>-Prefix.pchして、ここにファイルをインポートします。

#import "SCConstants.h"

これで、プロジェクトの任意のクラスで定数を簡単に使用できるようになりました。

于 2012-04-25T10:18:26.260 に答える
0

「Constants.h」というヘッダー ファイル名を作成できます。次に、次のような定数を使用する場所にこのヘッダー ファイルをインポートする必要があります。

#import "Constants.h"
于 2012-04-25T09:45:29.247 に答える
0

文字列を宣言するヘッダー ファイルを作成し、必要に応じてインポートします

于 2012-04-25T09:31:10.820 に答える