Sonny Sonny - 5 months ago 14
Swift Question

In Swift how do I convert int to string and reverse and display result?



The program is suppose to change F TO C and reverse. With the Switch it changes from on to off and on is suppose to be C to f and off is F to c and entering the # underneath in the text field.
When clicking the submit button it takes whats in the text field transfers it to an in preforms the algorithm and then displays it in the textfield.

I believe the conversion is going correctly but will not display the actual result. Or the way its being converted is wrong.

@IBOutlet weak var buttonClicked: UIButton!
@IBOutlet weak var mySwitch: UISwitch!
@IBOutlet weak var myTextField: UITextField!

@IBOutlet weak var User: UITextField!



func stateChanged(switchState: UISwitch) {
if switchState.on {
myTextField.text = "Convert to Celius"
} else {
myTextField.text = "Convert to Farheniet"
}
}

@IBAction func buttonClicked(sender: UIButton) {
if mySwitch.on {
var a:Double? = Double(User.text!)
a = a! * 9.5 + 32
User.text=String(a)


mySwitch.setOn(false, animated:true)
} else {
var a:Double? = Double(User.text!)
a = a! * 9.5 + 32
User.text=String(a)

mySwitch.setOn(true, animated:true)
}

}

Answer

I am using an older version of XCode(6.4) so my code will be a little bit different from yours. From what I understand your function buttonClicked should take the argument of AnyObject instend of UIButton. Also you do not call the function stateChanged in your code at all. The following code should help achieve what you trying to do.

@IBOutlet weak var mySwitch: UISwitch!
@IBOutlet weak var myTextField: UITextField!

@IBOutlet weak var User: UITextField!



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

    // sets the textfield to the intended conversion on load.
    if mySwitch.on {
        myTextField.text = "Convert to Celius"
    }
    else {
        myTextField.text = "Convert to Farheniet"
    }

}

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

// changes the myTextFiled text to the intended conversion when the switch is manually switched on or off
@IBAction func switched(sender: AnyObject) {
    if mySwitch.on {
        myTextField.text = "Convert to Celsius"
    }
    else {
        myTextField.text = "Convert to Fahrenheit"
    }
}
// changes the myTextField text to intended reverse conversion after the buttonClicked func is completed.
func stateChanged(switchState: UISwitch) {
if switchState.on {
    myTextField.text = "Convert to Celsius"
}
else {
    myTextField.text = "Convert to Fahrenheit"
    }
}

// do the intended conversion(old version of XCode 6.4)
@IBAction func buttonClicked(sender: AnyObject) {
    if mySwitch.on {
        var a = (User.text! as NSString).doubleValue
        a = (a-32)*(5/9)
        User.text="\(a)"
        mySwitch.setOn(false, animated:true)
        stateChanged(mySwitch)
    }
    else {
        var a = (User.text! as NSString).doubleValue
        a = a * (9/5) + 32
        User.text="\(a)"
        mySwitch.setOn(true, animated:true)
        stateChanged(mySwitch)
    }
}