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%@指定一个对象。为了安全起见,您还应该在将 NSIntegerint传递给时将其强制转换为 an printf()(所以您会写@"%d", (int)row),因为 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 回答