1

そのため、私はオブジェクティブ C や型付き言語全般に慣れていませんが、それらの冗長性を楽しんでいます。

私はこのような定数の束を定義しています:

NSString const *MAP_TILES_TYPE_IDX = @"idx";
NSString const *MAP_TILES_TYPE_MLS = @"mls";
NSString const *MAP_TILES_TYPE_PROPERTY = @"mu";
NSString const *MAP_TILES_TYPE_SERVICES = @"sr";

そして、これらの文字列の1つだけを受け入れるメソッドがあります:

-(void) addTileLayer:(NSString *)type {
...
}

typeパラメータを定義済みの定数の1つにしたいという事実をより適切に実施するための提案を誰かに与えることはできますか?

私はどんな提案にもオープンです。

4

2 に答える 2

4

NSString次のenumように に置き換える必要があります。

typedef enum {
    MAP_TILES_TYPE_IDX,
    MAP_TILES_TYPE_MLS,
    MAP_TILES_TYPE_PROPERTY,
    MAP_TILES_TYPE_SERVICES
} MapTilesType;
...
-(void) addTileLayer:(MapTilesType)type {
    ...
}

NSStringこれらの定数にが必要な場合は、値を文字列にNSArrayマップする を次のように定義します。enum

NSArray *tileTypeToTypeName = @[@"idx", @"mls", @"mu", @"sr"];
于 2013-06-05T17:12:05.790 に答える
2

特定の文字列のみを受け入れるメソッドが必要な場合は、引数として NSString の代わりに列挙型を取り、その列挙型を必要な文字列に内部的に変換してみませんか?

このようにして、メソッドのユーザーは列挙値のみに制限されます。さらに、実際の文字列をそれらから隠すことができます (常に必要というわけではありませんが、よりきれいに見えます)。

于 2013-06-05T17:11:51.717 に答える