2017-12-05 2 views
-1

Ich habe eine Funktion definiert, die mehrere if-Anweisungen ausführt. obwohl es nur if-Anweisungen ausführt, aber else-Anweisungen in einem Ablauf, in dem es definiert ist, nicht ausführt. Was muss ich tun, um else-Anweisungen unmittelbar nach dem jeweiligen Aufruf von zugehörigen if-Anweisungen auszuführen.Wie man mehrere if-Anweisungen in ios optimal ausführt

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

Dies sieht aus wie der gleiche Vorgang oft mit unterschiedlichen Datensätzen gemacht. Das ist der Anwendungsfall für eine for-Schleife. Erstellen Sie eine Datenstruktur, die diese Buchstaben und Hinweise enthält, und führen Sie eine Schleife darüber, um eine einzelne Kopie dieses Codes für diese Daten auszuführen – Alexander

Antwort

4

können Sie verwenden Schalter mit 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

Sie auch diese Konstruktion verwenden können (vereinfacht, aber der Kerngedanke ist sichtbar):

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() 
    } 
} 
Verwandte Themen