2017-12-05 6 views
-1

複数のif文を実行する関数を定義しました。 if文だけを実行しますが、定義されているフロー内ではelse文を実行しません。関連するif文のそれぞれの呼び出しの直後にelse文を実行するために必要なこと。複数のif文を即座に実行する方法

func levelTwo() { 

    if firstText.text == "A" 
    { 
     hintLabel.text = "\(self.hintsTwo[1])" 
     self.firstValid.image = #imageLiteral(resourceName: "check") 
    } 
    else { 
     self.firstValid.image = #imageLiteral(resourceName: "markQ") 
    } 

    if SecFirstText.text == "A" && secSecText.text == "C" 
    { 
     hintLabel.text = "\(self.hintsTwo[2])" 
     self.secondValid.image = #imageLiteral(resourceName: "check") 
    } 
    else { 
     self.secondValid.image = #imageLiteral(resourceName: "markQ") 
    } 

    if thiFirstText.text == "C" && thiSecText.text == "A" && thiThirdText.text == "T" 
    { 
     hintLabel.text = "\(self.hintsTwo[3])" 
     self.thirdValid.image = #imageLiteral(resourceName: "check") 
    } 
    else { 
     self.thirdValid.image = #imageLiteral(resourceName: "markQ") 
    } 

} 
+0

これは、同じ操作のように見えますさまざまなデータセットで何回も実行されます。これはforループの使用例です。これらの文字とヒントを保持するデータ構造を作成し、そのデータのこのコードの単一コピーを実行してループします – Alexander

答えて

4

あなたはtuplesでスイッチを使用することができます。

switch(firstText.text, thiSecText.text) { 
    case ("A", _): 
     //First text equal a, second text equal anything 
     break 
    case ("A", "C"): 
     //First text A, second text B 
     break 
    case (_, "B"): 
     //First text anything, second text B 
     break 
    default: 
     break 
} 
0

ます。また、(単純化が、核となるアイデアが表示されている)このような構成を使用することがあります。

class MyClass { 
    var firstText = "One" 
    var secondText = "Two" 
    var thirdText = "Three" 
    var firstImage: UIImage? 
    var secondImage: UIImage? 
    var thirdImage: UIImage? 
} 

let instance = MyClass() 

let keyPaths = [\MyClass.firstText:\MyClass.firstImage, 
       \MyClass.secondText:\MyClass.secondImage, 
       \MyClass.thirdText:\MyClass.thirdImage] 

for (text, image) in keyPaths { 
    if instance[keyPath: text] == "Two" { 
     instance[keyPath: image] = UIImage() 
    } 
} 
関連する問題