ios - 太多样板代码 switch 语句 - iOS

标签 ios cocoa-touch switch-statement uilabel boilerplate

我有一个 switch 语句,可以适本地将文本添加到 11 个 UILabel。然而,它现在变得有点长,而且相同代码的副本太多了。我怎样才能进一步改进它?我可以制作一个标签数组,然后通过 for 循环访问它们吗??

这是代码切换语句:

switch ([number_sorted count]) {

            case 1:
                label_1.text = [NSString stringWithFormat:@"%ld", (long)[number_sorted[0] integerValue]];
                break;

            case 2:
                label_1.text = [NSString stringWithFormat:@"%ld", (long)[number_sorted[0] integerValue]];
                label_2.text = [NSString stringWithFormat:@"%ld", (long)[number_sorted[1] integerValue]];
                break;

            case 3:
                label_1.text = [NSString stringWithFormat:@"%ld", (long)[number_sorted[0] integerValue]];
                label_2.text = [NSString stringWithFormat:@"%ld", (long)[number_sorted[1] integerValue]];
                label_3.text = [NSString stringWithFormat:@"%ld", (long)[number_sorted[2] integerValue]];
                break;

            case 4:
                label_1.text = [NSString stringWithFormat:@"%ld", (long)[number_sorted[0] integerValue]];
                label_2.text = [NSString stringWithFormat:@"%ld", (long)[number_sorted[1] integerValue]];
                label_3.text = [NSString stringWithFormat:@"%ld", (long)[number_sorted[2] integerValue]];
                label_4.text = [NSString stringWithFormat:@"%ld", (long)[number_sorted[3] integerValue]];
                break;

            case 5:
                label_1.text = [NSString stringWithFormat:@"%ld", (long)[number_sorted[0] integerValue]];
                label_2.text = [NSString stringWithFormat:@"%ld", (long)[number_sorted[1] integerValue]];
                label_3.text = [NSString stringWithFormat:@"%ld", (long)[number_sorted[2] integerValue]];
                label_4.text = [NSString stringWithFormat:@"%ld", (long)[number_sorted[3] integerValue]];
                label_5.text = [NSString stringWithFormat:@"%ld", (long)[number_sorted[4] integerValue]];
                break;

            case 6:
                label_1.text = [NSString stringWithFormat:@"%ld", (long)[number_sorted[0] integerValue]];
                label_2.text = [NSString stringWithFormat:@"%ld", (long)[number_sorted[1] integerValue]];
                label_3.text = [NSString stringWithFormat:@"%ld", (long)[number_sorted[2] integerValue]];
                label_4.text = [NSString stringWithFormat:@"%ld", (long)[number_sorted[3] integerValue]];
                label_5.text = [NSString stringWithFormat:@"%ld", (long)[number_sorted[4] integerValue]];
                label_6.text = [NSString stringWithFormat:@"%ld", (long)[number_sorted[5] integerValue]];
                break;

            case 7:
                label_1.text = [NSString stringWithFormat:@"%ld", (long)[number_sorted[0] integerValue]];
                label_2.text = [NSString stringWithFormat:@"%ld", (long)[number_sorted[1] integerValue]];
                label_3.text = [NSString stringWithFormat:@"%ld", (long)[number_sorted[2] integerValue]];
                label_4.text = [NSString stringWithFormat:@"%ld", (long)[number_sorted[3] integerValue]];
                label_5.text = [NSString stringWithFormat:@"%ld", (long)[number_sorted[4] integerValue]];
                label_6.text = [NSString stringWithFormat:@"%ld", (long)[number_sorted[5] integerValue]];
                label_7.text = [NSString stringWithFormat:@"%ld", (long)[number_sorted[6] integerValue]];
                break;

            case 8:
                label_1.text = [NSString stringWithFormat:@"%ld", (long)[number_sorted[0] integerValue]];
                label_2.text = [NSString stringWithFormat:@"%ld", (long)[number_sorted[1] integerValue]];
                label_3.text = [NSString stringWithFormat:@"%ld", (long)[number_sorted[2] integerValue]];
                label_4.text = [NSString stringWithFormat:@"%ld", (long)[number_sorted[3] integerValue]];
                label_5.text = [NSString stringWithFormat:@"%ld", (long)[number_sorted[4] integerValue]];
                label_6.text = [NSString stringWithFormat:@"%ld", (long)[number_sorted[5] integerValue]];
                label_7.text = [NSString stringWithFormat:@"%ld", (long)[number_sorted[6] integerValue]];
                label_8.text = [NSString stringWithFormat:@"%ld", (long)[number_sorted[7] integerValue]];
                break;

            case 9:
                label_1.text = [NSString stringWithFormat:@"%ld", (long)[number_sorted[0] integerValue]];
                label_2.text = [NSString stringWithFormat:@"%ld", (long)[number_sorted[1] integerValue]];
                label_3.text = [NSString stringWithFormat:@"%ld", (long)[number_sorted[2] integerValue]];
                label_4.text = [NSString stringWithFormat:@"%ld", (long)[number_sorted[3] integerValue]];
                label_5.text = [NSString stringWithFormat:@"%ld", (long)[number_sorted[4] integerValue]];
                label_6.text = [NSString stringWithFormat:@"%ld", (long)[number_sorted[5] integerValue]];
                label_7.text = [NSString stringWithFormat:@"%ld", (long)[number_sorted[6] integerValue]];
                label_8.text = [NSString stringWithFormat:@"%ld", (long)[number_sorted[7] integerValue]];
                label_9.text = [NSString stringWithFormat:@"%ld", (long)[number_sorted[8] integerValue]];
                break;

            case 10:
                label_1.text = [NSString stringWithFormat:@"%ld", (long)[number_sorted[0] integerValue]];
                label_2.text = [NSString stringWithFormat:@"%ld", (long)[number_sorted[1] integerValue]];
                label_3.text = [NSString stringWithFormat:@"%ld", (long)[number_sorted[2] integerValue]];
                label_4.text = [NSString stringWithFormat:@"%ld", (long)[number_sorted[3] integerValue]];
                label_5.text = [NSString stringWithFormat:@"%ld", (long)[number_sorted[4] integerValue]];
                label_6.text = [NSString stringWithFormat:@"%ld", (long)[number_sorted[5] integerValue]];
                label_7.text = [NSString stringWithFormat:@"%ld", (long)[number_sorted[6] integerValue]];
                label_8.text = [NSString stringWithFormat:@"%ld", (long)[number_sorted[7] integerValue]];
                label_9.text = [NSString stringWithFormat:@"%ld", (long)[number_sorted[8] integerValue]];
                label_10.text = [NSString stringWithFormat:@"%ld", (long)[number_sorted[9] integerValue]];
                break;

            case 11:
                label_1.text = [NSString stringWithFormat:@"%ld", (long)[number_sorted[0] integerValue]];
                label_2.text = [NSString stringWithFormat:@"%ld", (long)[number_sorted[1] integerValue]];
                label_3.text = [NSString stringWithFormat:@"%ld", (long)[number_sorted[2] integerValue]];
                label_4.text = [NSString stringWithFormat:@"%ld", (long)[number_sorted[3] integerValue]];
                label_5.text = [NSString stringWithFormat:@"%ld", (long)[number_sorted[4] integerValue]];
                label_6.text = [NSString stringWithFormat:@"%ld", (long)[number_sorted[5] integerValue]];
                label_7.text = [NSString stringWithFormat:@"%ld", (long)[number_sorted[6] integerValue]];
                label_8.text = [NSString stringWithFormat:@"%ld", (long)[number_sorted[7] integerValue]];
                label_9.text = [NSString stringWithFormat:@"%ld", (long)[number_sorted[8] integerValue]];
                label_10.text = [NSString stringWithFormat:@"%ld", (long)[number_sorted[9] integerValue]];
                label_11.text = [NSString stringWithFormat:@"%ld", (long)[number_sorted[10] integerValue]];
                break;

            default:
                break;
        }

谢谢你抽出时间,丹。

最佳答案

另一种选择是使用 switch 语句的“fall through”属性

switch ([number_sorted count]) {
    case 11:
        label_11.text = [NSString stringWithFormat:@"%ld", (long)[number_sorted[10] integerValue]];
    case 10:
        label_10.text = [NSString stringWithFormat:@"%ld", (long)[number_sorted[9] integerValue]];
    case 9:
        label_9.text = [NSString stringWithFormat:@"%ld", (long)[number_sorted[8] integerValue]];
    case 8:
        label_8.text = [NSString stringWithFormat:@"%ld", (long)[number_sorted[7] integerValue]];
    case 7:
        label_7.text = [NSString stringWithFormat:@"%ld", (long)[number_sorted[6] integerValue]];
    case 6:
        label_6.text = [NSString stringWithFormat:@"%ld", (long)[number_sorted[5] integerValue]];
    case 5:
        label_5.text = [NSString stringWithFormat:@"%ld", (long)[number_sorted[4] integerValue]];
    case 4:
        label_4.text = [NSString stringWithFormat:@"%ld", (long)[number_sorted[3] integerValue]];
    case 3:
        label_3.text = [NSString stringWithFormat:@"%ld", (long)[number_sorted[2] integerValue]];
    case 2:
        label_2.text = [NSString stringWithFormat:@"%ld", (long)[number_sorted[1] integerValue]];
    case 1:
        label_1.text = [NSString stringWithFormat:@"%ld", (long)[number_sorted[0] integerValue]];
    default:
        break;
}

关于ios - 太多样板代码 switch 语句 - iOS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23723211/

相关文章:

iphone - 使用 iOS 开发计算机视觉应用程序

ios - jsonmodel - 模型级联(模型包括其他模型)

objective-c - 如何按比例缩放 UIImageView?

c++ - 可乐机代码的 switch 语句

Javascript 开关盒 : using individual methods to evaluate a case statement

ios - GPUImage:掩模模糊

ios - UITextField 开始听写

ios - 通过 URLForUbiquityContainerIdentifier+Path 而不是 NSMetadataQuery 检查 UI(Managed)Document 是否已经在 iCloud 中?

ios - Xcode Storyboard 警告 : Constraint referencing items turned off in current configuration. 在当前配置中关闭此约束

c++ - 您如何拥有 switch 语句的逻辑部分或以防万一部分?