【问题标题】:How can I replace the if-else statement for something way shorter?如何将 if-else 语句替换为更短的语句?
【发布时间】:2014-11-17 15:57:50
【问题描述】:

我认为下面的代码不言自明。

if (card==1) {
    cardImageString = @"myGrabbedImage1.png";
} else if (card==2) {
    cardImageString = @"myGrabbedImage2.png";
} else if (card==3) {
    cardImageString = @"myGrabbedImage3.png";
} else if (card==4) {
    cardImageString = @"myGrabbedImage4.png";
} else if (card==5) {
    cardImageString = @"myGrabbedImage5.png";
} else if (card==6) {
    cardImageString = @"myGrabbedImage6.png";
} else if (card==7) {
    cardImageString = @"myGrabbedImage7.png";
} else if (card==8) {
    cardImageString = @"myGrabbedImage8.png";
}

实际的 if-else 比这个大 10 倍。

卡片 = int.

CardImageString = NSString.

“card”只用在这个语句中,可以在你的回答中去掉。

我怎样才能简化这一切???谢谢!!

【问题讨论】:

    标签: objective-c if-statement nsstring nsarray simplify


    【解决方案1】:
    cardImageString = [NSString stringWithFormat:@"myGrabbedImage%@.png", @(card)];
    

    【讨论】:

    • @vince:你想检查卡片是否在 1 到 8 之间,以防万一。
    • NSNumber 整数在什么语言环境下会有不同的输出?我认为将它装箱成NSNumber 并打印出来是最灵活的,因为无论您使用intlongNSInteger 还是其他任何东西,它都可以工作而无需强制转换以避免编译器警告。
    • 好的,经过进一步测试,事实证明我错了。 stringWithFormat 使用系统语言环境,而不是当前语言环境。因此,无论用户的语言环境如何,您答案中的代码都将起作用。我需要对您的答案进行简单的编辑,以便撤消我的投票。很抱歉造成混乱。
    • 我实际上是在尝试找到一种方法来测试这一点,并一直认为我的语言环境设置不正确。感谢更新。
    【解决方案2】:
        cardImageString = [NSString stringWithFormat:@"myGrabbedImage%d.png",card];
    

    【讨论】:

      猜你喜欢
      • 2019-04-09
      • 2018-01-30
      • 1970-01-01
      • 2019-07-03
      • 2019-07-04
      • 2011-05-26
      • 2014-11-29
      • 1970-01-01
      相关资源
      最近更新 更多