2017-08-30 63 views
-3

我正在學習swift3編程,但在執行我的計算器應用程序之後,它在兩者之間崩潰。請檢查下面的代碼。運行期間代碼崩潰

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. 
    } 
} 

在運行時我正在逐漸fn_addition崩潰說線程1斷點2.1

+0

請使用後衛讓或者,如果讓你的力量解包值可以隨時崩潰 –

+0

你會發布你的崩潰日誌? –

+0

您需要了解如何提出問題。只是提供沒有任何錯誤的代碼是不可接受的。 –

回答

0

Initiliaze的變量如下

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

下面的方法替換你的方法。

@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) 
} 

建議:您正在使用相同的文本字段,以A,B值和用於顯示和結果。最好使用兩個不同的文本字段分別取a和b值。拿一個標籤來顯示總和值。

+0

你的代碼在改進時仍然有「text_feild.text!」這是力量解開,這可能導致崩潰 –