-3

I am learning swift3 programming but after executing my calculator app its crashing in between. Please check the below code.

import UIKit

class ViewController: UIViewController {
    @IBOutlet weak var aLabel: UILabel!
    @IBOutlet weak var commmon_button: UIButton!
    var a: Int?
    var b: Int?
    var sum: Int?
    var val = ""
    @IBOutlet weak var text_feild: UITextField!

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

    @IBAction func clik_button(_ sender: UIButton) {
        val=String(sender.tag)
        text_feild.text = text_feild.text! + val
    }

    @IBAction func fn_addition(_ sender: UIButton) {
        a = Int(text_feild.text!)
    }

    @IBAction func fn_answer(_ sender: UIButton) {
        b = Int(text_feild.text!)
        sum = a! + b!
        a = 0
        b = 0
        text_feild.text = nil
        text_feild.text = String(sum!)
    }

    override func viewDidDisappear(_ animated: Bool) {
        super.viewDidDisappear(animated)
    }

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

During run time i am getting crash at fn_addition by saying Thread 1 breakpoint 2.1

1 Answers1

0

Initiliaze your variables as below

var a = 0
var b = 0
var sum = 0    

Replace your methods with below methods.

 @IBAction func clik_button(_ sender: UIButton) {

     guard let value = String(sender.tag), let text = text_feild.text
            else {
            return
        }
     text_feild.text = text + value
}

@IBAction func fn_addition(_ sender: UIButton) {
   guard let aValue = Int(text_feild.text)
         else{
            return
          }
   a = aValue
}

@IBAction func fn_answer(_ sender: UIButton) {
       guard let bValue = Int(text_feild.text)
              else{return}
            b = bValue
            sum = a + b
            a = 0
            b = 0


    text_feild.text = ""
    text_feild.text = String(sum)
}

Suggestion: You are using same text field for taking a , b values and for showing sum result. It is better to use two different text fields for taking a and b values separately. Take a label to show sum value.

Krishnarjun Banoth
  • 1,410
  • 1
  • 15
  • 30