2017-12-05 1 views
-1

여러 if 문을 실행하는 함수를 정의했습니다. if-statement 만 실행하지만 정의 된 플로우에서는 else 문을 실행하지 않습니다. 관련된 if 문을 호출 한 직후 else 문을 실행하려면 어떻게해야합니까?신속한 ios에서 여러 if 문을 최적으로 실행하는 방법

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

이 같은 작업처럼 보인다 서로 다른 데이터 세트로 여러 번 수행됩니다. 이것이 for 회 돌이의 유스 케이스이다. 이러한 문자와 힌트를 포함하는 데이터 구조를 만들고이 데이터에 대해이 코드의 단일 복사본을 실행하여 반복합니다. – Alexander

답변

4

당신은 tuples와 스위치를 사용할 수

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() 
    } 
} 
0

또한이 건설 사용할 수있다 (간체을하지만, 핵심 아이디어는 볼 수) :

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") 
    } 

}