如何在swift

时间:2015-07-19 04:01:44

标签: ios numbers range

我正在创建一个iOS应用程序,但我遇到了一个需要帮助克服的障碍。我的问题是我的应用程序使用了分数计数器,我希望该应用程序为用户提供某些分数的某些奖牌。例如,如果用户得分为20,我希望应用程序给他们一枚铜牌,如果用户得分在21-49之间,他们会得到一枚银牌。我希望你明白这个主意。我试过这个:

if String(score) > 55{
         medal = SKSpriteNode(imageNamed:"medalG")
    }
    var x = 20
    var y = 50

    if (String(score) = x...y){
        medal = SKSpriteNode(imageNamed:"medalS")
    }
    if String(score) < 20{ //this line always gives me issues
        medal = SKSpriteNode(imageNamed:"medalB")
    }

我已经尝试更换第二个&#39; if&#39;与此相符

if (String(score) = x..<y){ }

然而这也给了我一些问题

我也试过......

if String(score)<50 && String(score)>20{ }

但这也有问题,请有人帮忙

2 个答案:

答案 0 :(得分:1)

Range有一个方法contains,您可以使用该方法检查特定值是否位于范围的端点之间。但是你可能最好使用switch语句 - 它的间隔匹配,它基本上是为这种情况设计的。

您可以执行以下操作:

// assume score is an Int defined above
switch score {
   case 0...20:
      medal = SKSpriteNode(imageNamed: "medalB")
   case 21...49:
      medal = SKSpriteNode(imageNamed: "medalS")
   case 50...60:
      medal = SKSpriteNode(imageNamed: "medalG")
   default:
      print("It is inconceivable that you are this good.")
}

请记住,switch语句必须穷举,即必须有一个案例来匹配您要切换的表达式的每个可能值。这就是我添加上述默认值的原因。

答案 1 :(得分:0)

您可以使用“pattern-match”运算符〜=:

if 20 ... 50 ~= String(score) {
    println("success")
}

带有表达式模式的switch语句(在内部使用模式匹配运算符):

switch String(score) {
case 20 ... 50:
    println("success")
default:
    println("failure")
}

获取更多帮助Pattern matching