简化开关语句(Objective-C)

Emi*_*mil 1 iphone objective-c switch-statement uipickerview

我正在尝试简化一个需要大量空间和时间来编写的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;
    }
}
Run Code Online (Sandbox Code Playgroud)

有什么方法可以简化这个吗?只是喜欢,

NSLog(@"It did work! %@", row);
Run Code Online (Sandbox Code Playgroud)

为了记录,我尝试了,它没有用.

Chu*_*uck 8

整数的格式说明符是%d- %@指定一个对象.为了安全起见,你还应该将NSInteger强制转换intprintf()(因此你要编写@"%d", (int)row),因为NSInteger的大小不能保证是%d说明符所printf()期望的大小.

顺便说一下,您不需要为每个case语句重复它.如果不休息,控制权将落到下一个案例中.


Tec*_*Zen 6

像查克说你可以做......

NSLog(@"It did work! %d", row);
Run Code Online (Sandbox Code Playgroud)

......或者你可以把它变成幻想并把它变成一个物体......

NSLog(@"It did work! %@", [NSNumber numberWithInt:row]);
Run Code Online (Sandbox Code Playgroud)