0

ApplicationConstants.hファイルに列挙型を 1 つ作成しました。列挙型は以下のとおりです。

typedef enum { CurrentLocation = 0, CurrentCity, CurrentRegion } enumLocation;

ここで問題は、この列挙型をUIPickerViewのデータ ソースとして設定する方法がわからないことです。誰かがこれについて私に考えを与えることができますか? 以前にNSArrayをデータソースとして使用したことがあります。しかし、今は列挙型が必要です。この問題のため、私は立ち往生しました。手伝って頂けますか ?だから私は私のアプリケーションで先に進むことができます.

4

3 に答える 3

0

列挙型の識別子を直接表示することはできません。各要素の文字列を準備するには、大きなif / else / switchブロックを準備するか、配列内のすべての要素に文字列を追加して、そこからインデックスで選択する必要があります。

プログラムでは通常、マジックナンバーの代わりに列挙型が使用されるため、人間がコードを読みやすくするように設計されていますが、基になる表現は基本データ型(int、charなど)の1つです。

于 2012-07-31T12:11:20.917 に答える
0

次のように、インスタンス用の単純なマクロを定義する方法を選択できます。

ヘッダファイル ( .h ):

#define NAMEOF(var) @#var

typedef enum : NSInteger {
    CustomTypeUknown = 0,
    CustomTypeSomething,
    CustomTypeParticularValue,
    CustomTypeBoringValue,
} CustomType;

実装ファイル ( .m )

NSArray *_array = [NSArray arrayWithObjects:NAMEOF(CustomTypeUknown), NAMEOF(CustomTypeSomething), NAMEOF(CustomTypeParticularValue), NAMEOF(CustomTypeBoringValue), nil];

オブジェクトは名前付きの文字列になりますが、安全のためにログを介して値を確認できます_array:

NSLog(@"%@", _array);

次のようになります。

(
    CustomTypeUknown,
    CustomTypeSomething,
    CustomTypeParticularValue,
    CustomTypeBoringValue
)

私があなたの問題を誤解していなければ、それはあなたが探していたものです...

于 2014-05-15T14:38:46.077 に答える