为什么if else语句的else部分没有执行?

时间:2019-06-14 19:40:10

标签: swift

if else语句从被调用的函数获取布尔返回值,但是真正的部分执行,而错误的部分则不执行。我检查了语法,它是正确的,因此肯定缺少某些内容。

我尝试过使用while循环,但是那样行不通,因为如果返回值是false,它不会让我做任何事情。

import UIKit

class ViewController: UIViewController {

    var word: String = ""

    @IBOutlet weak var Label: UILabel!

    //This is the text field
    @IBOutlet weak var textField: UITextField!


    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
    }


    @IBAction func wordButtonTapped(_ sender: Any) {
        word = textField.text!
        userInput()

        if true {
            Label.text = "This is a Palindrme."
        } else {
            Label.text = "This is not a Palindrome."
        }
    }

    func userInput() {
        Util.shared.isPalindrome(word: word)
    }
}

我希望文本显示在我的标签字段中。

3 个答案:

答案 0 :(得分:2)

那是因为它进行了比较“是==真的吗?”并且它将始终返回true,因此永远不会进入else部分

答案 1 :(得分:2)

您的函数未返回任何内容,而是分支到if true上,这显然总是正确的(这里应该有编译器警告)。

您需要更新函数以实际返回值:

func userInput() -> Bool {
    return Util.shared.isPalindrome(word: word)
}

并将该值用于if语句:

if userInput() {
    Label.text = "This is a Palindrme."
} else {
    Label.text = "This is not a Palindrome."
}

答案 2 :(得分:1)

if true条件始终得到满足。如果要使用它,则应修改userInput()方法以返回布尔值。

func userInput() -> Bool {
    return Util.shared.isPalindrome(word: word)
}

然后处理结果:

if userInput() { 
    // do something 
} else { 
    // do something else 
}