2016-07-23 12 views
0

私はBMICalculatorで作業しています。私はここで任意の値を見つけることができないようです。数字だけを入力できるように、数字パッドをキーボードとして選択しました。Xcodeコンソールエラーメッセージ: '致命的なエラー:予期せず見つからないオプション値をアンラッピング中'(Swift)

class ResultsController: UIViewController { 

    @IBOutlet weak var bmiValue: UILabel! 
    @IBOutlet weak var bmiDescription: UILabel! 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     // Do any additional setup after loading the view. 
    } 

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

} 
+0

例外をスローする行はどれですか?ブレークポイントとシングルステップを設定して何が無かったのかを調べますが、私の疑念は 'results.bmiValue'になります。 prepareForSegueの次のフィールドに直接書き込むのではなく、別のプロパティを設定し、viewWillAppearのテキストフィールドにそのプロパティの値を設定する必要があります – Paulw11

答えて

0

heightTextField.text:

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
    if let results = segue.destinationViewController as? ResultsController { 

     if let height = Double(heightTextField.text!), weight = Double(weightTextField.text!) { 
      let info = BMIInformation(cm: height, kg: weight) 
      let bmi = String(info.computeBMI()) 
      results.bmiValue.text = bmi 
     } 
    } 

} 

は、ここに私の結果コントローラクラスです!あなたがクラッシュを投げされたラインがわからないので、それを

0

をアンラップ強制しようとすると、おそらく価値を持っていないので、私の推測では、それは

heightTextField.textすることができます!

ただ、この代わりに

(heightTextField?の.text)のようにそれを使用!

理由:私は検討していますがheightTextFieldの出口を持っており、それがこの

@IBOutlet弱いのvar heightTextFieldのようなものを見なければならない:UITextFieldですが!

この行の末尾にある感嘆符は、変数が値を期待していることを意味し、nilにすることはできません。これがストーリーボードに接続されているかどうかを確認します。そうでなければ、それはゼロになるでしょう。したがって、クラッシュします。

? in(heightTextField?.text)!、この変数を使用すると、変数がnilになってもクラッシュしないことをコンパイラに問い合わせます。しかし、あなたのテキストフィールドに入力したかもしれないテキストも与えません。 IBOutletの接続性を確認してください。

これがクラッシュの理由でない場合は、迅速かつすべての例外ブレークポイントを追加し、クラッシュの場所を見つけようとしてください。説明するのが簡単になります。

関連する問題