H.A. H.A. - 7 months ago 14
Swift Question

Why won't swift recalculate the 'if' statement?

I'm trying to create a very simple 'guessing game' where the user has to guess how many fingers the computer has up (maximum 5 fingers).

Here's the thing. When the code executes and I press submit, even when the print logs registers a correct number, the app still prints the if statement for incorrect. Where am I going wrong?

import UIKit


class ViewController: UIViewController {


override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
}

override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}




@IBOutlet weak var fingerInput: UITextField!

@IBOutlet weak var fingerResult: UILabel!

@IBAction func fingerSubmit(sender: AnyObject) {

let realNumberofFingers = Int(arc4random_uniform(6))

print(realNumberofFingers)

if fingerInput != realNumberofFingers {

fingerResult.text = "Gosh darn, that's wrong!"

} else if fingerInput == realNumberofFingers {

fingerResult.text = "Thats right!"

}
}


}

Answer

You are comparing the actual UITextField fingerInput with the realNumberofFingers. That is wrong and will always yield false. What you should do instead is parse the string from the fingerInput and check if the integer contained in that string is equal to realNumberofFingers:

@IBAction func fingerSubmit(sender: AnyObject) {

    let input = Int(fingerInput.text!)

    if let enteredFingers = input {
        let realNumberofFingers = Int(arc4random_uniform(6))
        print(realNumberofFingers)

        if enteredFingers == realNumberofFingers {
            fingerResult.text = "Thats right!"
        } else {
            fingerResult.text = "Gosh darn, that's wrong!"
        }
    } else {
        fingerResult.text = "Please enter a correct guess - an integer!"
    }
}