1. ホーム
  2. objective-c

[解決済み] Objective-CはNSStringで切り替えられるのか?

2022-04-22 01:32:55

質問

もっとスマートな書き方はないでしょうか?

if ([cardName isEqualToString:@"Six"]) {
    [self setValue:6];
} else if ([cardName isEqualToString:@"Seven"]) {
    [self setValue:7];
} else if ([cardName isEqualToString:@"Eight"]) {
    [self setValue:8];
} else if ([cardName isEqualToString:@"Nine"]) {
    [self setValue:9];
} 

解決方法は?

残念ながら、それはできません。これはswitch文の最高の活用法の1つであり、最も求められているものなので、(今は)Java(やその他の)バンドワゴンに飛び乗ることを期待します

カード名なら、各カードオブジェクトに整数値を割り当てて、それでスイッチするのがよいでしょう。あるいは、enumを数値とみなして、それをスイッチにすることもできます。

typedef enum{
  Ace, Two, Three, Four, Five ... Jack, Queen, King

} CardType;

このようにすると、Aceはケース0、Twoはケース1などと同じになります。