1

書くのに多くのスペースと時間を要するswitchステートメントを単純化しようとしています。コードを見て、あなたは理解するでしょう。そうでない場合は、後で説明します。

// When row is selected
- (void)pickerView:(UIPickerView *)pickerTimer didSelectRow:(NSInteger)row inComponent:(NSInteger)component {

    switch (row) {
        case 0:
            NSLog(@"It obviously worked.0");
            break;
        case 1:
            NSLog(@"It obviously worked.1");
            break;
        case 2:
            NSLog(@"It obviously worked.2");
            break;
        case 3:
            NSLog(@"It obviously worked.3");
            break;
        case 4:
            NSLog(@"It obviously worked.4");
            break;
        case 5:
            NSLog(@"It obviously worked.5");
            break;
        case 6:
            NSLog(@"It obviously worked.6");
            break;
        default:
            NSLog(@"It did kindof work.NIL");
            break;
    }
}

これを単純化する方法はありますか?好きなように

NSLog(@"It did work! %@", row);

記録のために、私はそれを試しましたが、うまくいきませんでした。

4

2 に答える 2

8

整数のフォーマット指定子は%d%@オブジェクトを指定します。安全のために、NSIntegerをint渡すときにprintf()(と書くように@"%d", (int)row)NSIntegerをにキャストする必要があります。これは、NSIntegerのサイズが、%d指定者がprintf()期待するサイズであることが保証されていないためです。

ちなみに、caseステートメントごとに繰り返す必要はありません。中断することなく、制御は次のケースにフォールスルーします。

于 2010-02-09T19:22:26.197 に答える
6

チャックが言ったようにあなたはできる...

NSLog(@"It did work! %d", row);

...または、空想を得て、それをオブジェクトに変えることができます...

NSLog(@"It did work! %@", [NSNumber numberWithInt:row]);
于 2010-02-09T19:27:02.590 に答える