我正在创建一个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{ }
但这也有问题,请有人帮忙
答案 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