Swift:if语句有多个文本

时间:2018-01-16 21:33:06

标签: swift if-statement

我的问题:

我有三个阵列,一个有汽车公司名称["丰田","奥迪",#34;日产"],另一个有汽车模块编号[& #34; 2008"," 2009"," 2010"," 2011"," 2012"],最后一个有汽车名称["凯美瑞"," Landcruser"]。

我想要一个简短的方法来执行以下操作:

如果输入(1)是[" Nissan"]而输入(2)是[" camry"]而输入(3)是" 2008&# 34;直到" 2011" { result.text ="一些文字" }

我做的一切都正确但我的问题在于此代码[" 2008"直到" 2011"我怎么能用if做呢?

这是我的代码:

if (carCompass.text  == "Nissan") && (carTpass.text  == "camry") && (carMpass.text  == "2008") || (carMpass.text  == "2009") || 
    (carMpass.text  == "2010") || (carMpass.text  == "2011") || 
    (carMpass.text  == "2012") && (calc_color.backgroundColor == UIColor(red: 0.2078, green: 0.4471, blue: 0.349, alpha: 1.0))  {

    result.text = " \(landcruzer08_18)" + "L" + "\(landcruzer08_18*1.37) SAR"
}

它的工作正常,但我认为它不干净或专业

1 个答案:

答案 0 :(得分:2)

将您的汽车数据重构为正确类型的结构(例如,将年份设为Int,而不是String),并使用范围操作:

if car.make == "Nissan", car.model == "Camry", 2008...2011 ~= car.year {
    result.text = " \(landcruzer08_18)L\(landcruzer08_18*1.37) SAR"
}

如果您需要选择众多选项中的一个,则可以使用switch

switch (car.make, car.model, car.year) {
    case ("Nissan", "Camry", 2008...2011):
        result.text = " \(landcruzer08_18)L\(landcruzer08_18*1.37) SAR"

    case ("Honda", "Civic", 2005...2015):
        //...
}