I just started learning the basics to Swift 3 about 2 days ago. Since then, I've decided to make a simple calculator that can only do one operation at a time.
I was wondering how efficient this was and what I could possibly do to make it more efficient. Any type of criticism would be helpful too
import UIKit
class ViewController: UIViewController {
@IBOutlet var buttonResponseLabel: UILabel!
var userIsCurrentlyTyping: Bool = false
var storedValue: Int = 0;
var currentOperation = 0
var currentNumberInLabel = ""
@IBAction func buttonAppend(_ sender: UIButton)
{
let buttonTitle = sender.currentTitle!
switch buttonTitle
{
case "+":
currentOperation = 1
storedValue = Int(currentNumberInLabel)!
buttonResponseLabel.text = ""
case "-":
currentOperation = 2
storedValue = Int(currentNumberInLabel)!
buttonResponseLabel.text = ""
case "*":
currentOperation = 3
storedValue = Int(currentNumberInLabel)!
buttonResponseLabel.text = ""
case "/":
currentOperation = 4
storedValue = Int(currentNumberInLabel)!
buttonResponseLabel.text = ""
default:
if buttonTitle == "="
{
var finalValue = 0
print(currentNumberInLabel)
let secondStoredValue = Int(currentNumberInLabel)!
if currentOperation == 1
{
finalValue = storedValue + secondStoredValue
buttonResponseLabel.text = ""
buttonResponseLabel.text = String(finalValue)
}
else if currentOperation == 2
{
finalValue = storedValue - secondStoredValue
buttonResponseLabel.text = ""
buttonResponseLabel.text = String(finalValue)
}
else if currentOperation == 3
{
finalValue = storedValue * secondStoredValue
buttonResponseLabel.text = ""
buttonResponseLabel.text = String(finalValue)
}
else if currentOperation == 4
{
finalValue = storedValue / secondStoredValue
buttonResponseLabel.text = ""
buttonResponseLabel.text = String(finalValue)
}
}
else
{
if userIsCurrentlyTyping
{
currentNumberInLabel = buttonResponseLabel.text! + buttonTitle
buttonResponseLabel.text = currentNumberInLabel
}
else
{
userIsCurrentlyTyping = true
buttonResponseLabel.text = ""
buttonResponseLabel.text = buttonTitle
}
}
print("\(currentOperation) \(buttonTitle)")
}
}
}