2016-09-29 8 views
0

****更新****スイフト3:計算フィールドエラー

最新のサガは私にはまだ混乱しています。私がアドバイスしたように、私は数学的計算に従ってコードを順序づけました。私はまだしかし、前と同じように実行エラーを取得しています。添付ファイルをご覧ください。

@IBAction func Calculate(_ sender: AnyObject) { 

    let firstValue = Double(ZFWinput.text!) 
    let secondValue = Double(TotalFuelinput.text!) 
    let thirdValue = Double(TripFuelinput.text!) 

    let TFO000 = Double(secondValue!) 
    let TFO004 = Double(secondValue! * 1.004) 
    let TFO006 = Double(secondValue! * 1.006) 
    let TFO007 = Double(secondValue! * 1.007) 
    let TFO010 = Double(secondValue! * 1.01) 
    let TFO011 = Double(secondValue! * 1.011) 
    let TFO012 = Double(secondValue! * 1.012) 

    let TripF000 = Double(thirdValue!) 
    let TripF004 = Double(thirdValue! * 1.004) 
    let TripF006 = Double(thirdValue! * 1.006) 
    let TripF007 = Double(thirdValue! * 1.007) 
    let TripF010 = Double(thirdValue! * 1.10) 
    let TripF011 = Double(thirdValue! * 1.11) 
    let TripF012 = Double (thirdValue! * 1.12) 


    // *Self Reminder* Calculation for Total Fuel Adjustment with various TDP Loaded 

    if mainbutton.isOn && fwdbutton.isOn && aftbutton.isOn { 
     TotalFuelOutput2.text = "\(TFO012)" 
    } 
    else if fwdbutton.isOn && aftbutton.isOn { 
     TotalFuelOutput2.text = "\(TFO012)" 
    } 
    else if mainbutton.isOn && fwdbutton.isOn { 
     TotalFuelOutput2.text = "\(TFO011)" 
    } 
    else if mainbutton.isOn && aftbutton.isOn { 
     TotalFuelOutput2.text = "\(TFO010)" 
    } 
    else if aftbutton.isOn { 
     TotalFuelOutput2.text = "\(TFO006)" 
    } 
    else if fwdbutton.isOn { 
     TotalFuelOutput2.text = "\(TFO007)" 
    } 
    else if mainbutton.isOn { 
     TotalFuelOutput2.text = "\(TFO004)" 
    } 
    else {TotalFuelOutput2.text = "\(TFO000)"} 


    // *Self Reminder* Calculation for Trip Fuel Adjust with various TDP Loaded 

    if mainbutton.isOn && fwdbutton.isOn && aftbutton.isOn { 
     TripFuelOutput2.text = "\(TripF012)" 
    } 
    else if fwdbutton.isOn && aftbutton.isOn { 
     TripFuelOutput2.text = "\(TripF012)" 
    } 
    else if mainbutton.isOn && fwdbutton.isOn { 
     TripFuelOutput2.text = "\(TripF011)" 
    } 
    else if mainbutton.isOn && aftbutton.isOn { 
     TripFuelOutput2.text = "\(TripF010)" 
    } 
    else if aftbutton.isOn { 
     TripFuelOutput2.text = "\(TripF006)" 
    } 
    else if fwdbutton.isOn { 
     TripFuelOutput2.text = "\(TripF007)" 
    } 
    else if mainbutton.isOn { 
     TripFuelOutput2.text = "\(TripF004)" 
    } 
    else {TripFuelOutput2.text = "\(TripF000)"} 

    //---- 
    let fourthValue = Double(TotalFuelOutput2.text!) 
    let fifthValue = Double(TripFuelOutput2.text!) 

    let RampWeight1 = Double(firstValue! + secondValue!) 
    let TOW1 = Double(RampWeight1 - 1) 
    let LMass1 = (TOW1 - thirdValue!) 

    let RampWeight2 = Double(firstValue! + fourthValue!) 
    let TOW2 = Double(RampWeight2 - 1) 
    let LMass2 = (TOW2 - fifthValue!) 

    // *Self Reminder* Calculation for center figuers with no TDP adjustments 

    RampOutput1.text = "\(RampWeight1)" 
    TOWOutput1.text = "\(TOW1)" 
    LandOutput1.text = "\(LMass1)" 

    // *Self Reminder* Calculation for right hand side figures using new TotalFuelOutput2 & TripFuelOutput2 

    RampOutput2.text = "\(RampWeight2)" 
    TOWOutput2.text = "\(TOW2)" 
    LandOutput2.text = "\(LMass2)" 


} 

私はプログラムを実行し、入力を確認します。最初の3つが正しければ、それは次に上記の順序に従って計算を実行する前にfourthValueの次にジャンプします。私は以下のスクリーンショットを添付しました。

Here

コードでランタイムエラーは、正しいTFO012結果に下回っています。 Here

fourValue should TFO012の値は101.2ですが、リストの2.16095795579922694E-314です。この番号はどこから受け取ったのですか?

もう一度お詫び申し上げます。あなたはすでに私にとって大きな助けとなり、真剣に感謝しています!

@Sam M、この完全なビューコントローラコード

// 
// ViewController.swift 
// TDP Calculator 
// 
// Created by Ryan Harris on 24/09/2016. 
// Copyright © 2016 Harris. All rights reserved. 
// 

import UIKit 

class ViewController: UIViewController, UITextFieldDelegate { 

@IBOutlet weak var scrollView: UIScrollView! 

@IBOutlet var mainbutton: UISwitch! 
@IBOutlet var fwdbutton: UISwitch! 
@IBOutlet var aftbutton: UISwitch! 

@IBOutlet var maindeckimage: UIImageView! 
@IBOutlet var fwdholdimage: UIImageView! 
@IBOutlet var aftholdimage: UIImageView! 

@IBOutlet var ZFWinput: UITextField! 
@IBOutlet var TotalFuelinput: UITextField! 
@IBOutlet var TripFuelinput: UITextField! 

@IBOutlet var RampOutput1: UILabel! 
@IBOutlet var TOWOutput1: UILabel! 
@IBOutlet var LandOutput1: UILabel! 

@IBOutlet var Calculate: UIButton! 

@IBOutlet var ZFWOutput2: UILabel! 
@IBOutlet var TotalFuelOutput2: UILabel! 
@IBOutlet var RampOutput2: UILabel! 
@IBOutlet var TOWOutput2: UILabel! 
@IBOutlet var TripFuelOutput2: UILabel! 
@IBOutlet var LandOutput2: UILabel! 

//Switches linked to all cargo bays on profile 

@IBAction func maindeckswitch(_ sender: AnyObject) { 
    if mainbutton.isOn { 
     maindeckimage.isHidden = true 
     mainbutton.setOn(false, animated: true) 
    }else{ 
     maindeckimage.isHidden = false 
     mainbutton.setOn(true, animated: true) 
    } 

} 


@IBAction func fwdholdswitch(_ sender: AnyObject) { 
    if fwdbutton.isOn { 
     fwdholdimage.isHidden = true 
     fwdbutton.setOn(false, animated: true) 
    }else{ 
     fwdholdimage.isHidden = false 
     fwdbutton.setOn(true, animated: true) 
} 

} 


@IBAction func aftholdswitch(_ sender: AnyObject) { 
    if aftbutton.isOn { 
     aftholdimage.isHidden = true 
     aftbutton.setOn(false, animated: true) 
    }else{ 
     aftholdimage.isHidden = false 
     aftbutton.setOn(true, animated: true) 
    } 


} 


override func viewDidLoad() { 
    super.viewDidLoad() 

    //Remove Keyboard with background Touch - Ryan Harris 

    let tapRecognizer = UITapGestureRecognizer() 
    tapRecognizer.addTarget(self, action: #selector(ViewController.didTapView)) 
    self.view.addGestureRecognizer(tapRecognizer) 

} 

//Link function to Keyboard removal 

func didTapView(){ 
    self.view.endEditing(true) 
} 



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

} 



// Calculation Code Starts here 

@IBAction func Calculate(_ sender: AnyObject) { 

    let firstValue = Double(ZFWinput.text!) 
    let secondValue = Double(TotalFuelinput.text!) 
    let thirdValue = Double(TripFuelinput.text!) 

    let TFO000 = Double(secondValue!) 
    let TFO004 = Double(secondValue! * 1.004) 
    let TFO006 = Double(secondValue! * 1.006) 
    let TFO007 = Double(secondValue! * 1.007) 
    let TFO010 = Double(secondValue! * 1.01) 
    let TFO011 = Double(secondValue! * 1.011) 
    let TFO012 = Double(secondValue! * 1.012) 

    let TripF000 = Double(thirdValue!) 
    let TripF004 = Double(thirdValue! * 1.004) 
    let TripF006 = Double(thirdValue! * 1.006) 
    let TripF007 = Double(thirdValue! * 1.007) 
    let TripF010 = Double(thirdValue! * 1.10) 
    let TripF011 = Double(thirdValue! * 1.11) 
    let TripF012 = Double (thirdValue! * 1.12) 


    // *Self Reminder* Calculation for Total Fuel Adjustment with various TDP Loaded 

    if mainbutton.isOn && fwdbutton.isOn && aftbutton.isOn { 
     TotalFuelOutput2.text = "\(TFO012)" 
    } 
    else if fwdbutton.isOn && aftbutton.isOn { 
     TotalFuelOutput2.text = "\(TFO012)" 
    } 
    else if mainbutton.isOn && fwdbutton.isOn { 
     TotalFuelOutput2.text = "\(TFO011)" 
    } 
    else if mainbutton.isOn && aftbutton.isOn { 
     TotalFuelOutput2.text = "\(TFO010)" 
    } 
    else if aftbutton.isOn { 
     TotalFuelOutput2.text = "\(TFO006)" 
    } 
    else if fwdbutton.isOn { 
     TotalFuelOutput2.text = "\(TFO007)" 
    } 
    else if mainbutton.isOn { 
     TotalFuelOutput2.text = "\(TFO004)" 
    } 
    else {TotalFuelOutput2.text = "\(TFO000)"} 


    // *Self Reminder* Calculation for Trip Fuel Adjust with various TDP Loaded 

    if mainbutton.isOn && fwdbutton.isOn && aftbutton.isOn { 
     TripFuelOutput2.text = "\(TripF012)" 
    } 
    else if fwdbutton.isOn && aftbutton.isOn { 
     TripFuelOutput2.text = "\(TripF012)" 
    } 
    else if mainbutton.isOn && fwdbutton.isOn { 
     TripFuelOutput2.text = "\(TripF011)" 
    } 
    else if mainbutton.isOn && aftbutton.isOn { 
     TripFuelOutput2.text = "\(TripF010)" 
    } 
    else if aftbutton.isOn { 
     TripFuelOutput2.text = "\(TripF006)" 
    } 
    else if fwdbutton.isOn { 
     TripFuelOutput2.text = "\(TripF007)" 
    } 
    else if mainbutton.isOn { 
     TripFuelOutput2.text = "\(TripF004)" 
    } 
    else {TripFuelOutput2.text = "\(TripF000)"} 

    //---- 
    let fourthValue = Double(TotalFuelOutput2.text!) 
    let fifthValue = Double(TripFuelOutput2.text!) 

    let RampWeight1 = Double(firstValue! + secondValue!) 
    let TOW1 = Double(RampWeight1 - 1) 
    let LMass1 = (TOW1 - thirdValue!) 

    let RampWeight2 = Double(firstValue! + fourthValue!) 
    let TOW2 = Double(RampWeight2 - 1) 
    let LMass2 = (TOW2 - fifthValue!) 

    // *Self Reminder* Calculation for center figuers with no TDP adjustments 

    RampOutput1.text = "\(RampWeight1)" 
    TOWOutput1.text = "\(TOW1)" 
    LandOutput1.text = "\(LMass1)" 

    // *Self Reminder* Calculation for right hand side figures using new TotalFuelOutput2 & TripFuelOutput2 

    RampOutput2.text = "\(RampWeight2)" 
    TOWOutput2.text = "\(TOW2)" 
    LandOutput2.text = "\(LMass2)" 


} 




} 
+0

あなたがfourthValueとfifthValueに指定した行が動作しない方法を知っていると便利だろう。コードはコンパイルされませんか?または、ランタイムエラーが発生しますか?どちらの場合でも、エラーは何ですか? – Fahim

+0

申し訳ありませんが、ランタイムエラーが発生しました...... RampWeight2 = double(firstValue!+ fourthValue!)THRED 1:EXC_BAD_INSTRUCTION(code = EXC_I386_INVOP、subcode = 0x0)と言っています – RyanHK

+0

http:// www。 raywenderlich.com/10209/my-app-crashed-now-what-part-1でクラッシュをデバッグする方法を学んでください。エラーの原因となった実際のコードで質問を更新してください。 – rmaddy

答えて

0

fourthValuefifthValueを計算して、TripFuelOutput2.textTotalFuelOutput2.textの値を設定する前に、計算しています。 fourthValuefifthValueのすべてのif-elsesの後に、TripFuelOutput2.textTotalFuelOutput2.textの値が設定されている宣言と計算を移動する必要があります。

は、このようにコードを変更します。

@IBAction func Calculate(_ sender: AnyObject) { 

    let firstValue = Double(ZFWinput.text!) 
    let secondValue = Double(TotalFuelinput.text!) 
    let thirdValue = Double(TripFuelinput.text!) 

    let TFO000 = Double(secondValue!) 
    let TFO004 = Double(secondValue! * 1.004) 
    let TFO006 = Double(secondValue! * 1.006) 
    let TFO007 = Double(secondValue! * 1.007) 
    let TFO010 = Double(secondValue! * 1.01) 
    let TFO011 = Double(secondValue! * 1.011) 
    let TFO012 = Double(secondValue! * 1.012) 

    let TripF000 = Double(thirdValue!) 
    let TripF004 = Double(thirdValue! * 1.004) 
    let TripF006 = Double(thirdValue! * 1.006) 
    let TripF007 = Double(thirdValue! * 1.007) 
    let TripF010 = Double(thirdValue! * 1.10) 
    let TripF011 = Double(thirdValue! * 1.11) 
    let TripF012 = Double (thirdValue! * 1.12) 


    // *Self Reminder* Calculation for Total Fuel Adjustment with various TDP Loaded 

    if mainbutton.isOn && fwdbutton.isOn && aftbutton.isOn { 
     TotalFuelOutput2.text = "\(TFO012)" 
    } 
    else if fwdbutton.isOn && aftbutton.isOn { 
     TotalFuelOutput2.text = "\(TFO012)" 
    } 
    else if mainbutton.isOn && fwdbutton.isOn { 
     TotalFuelOutput2.text = "\(TFO011)" 
    } 
    else if mainbutton.isOn && aftbutton.isOn { 
     TotalFuelOutput2.text = "\(TFO010)" 
    } 
    else if aftbutton.isOn { 
     TotalFuelOutput2.text = "\(TFO006)" 
    } 
    else if fwdbutton.isOn { 
     TotalFuelOutput2.text = "\(TFO007)" 
    } 
    else if mainbutton.isOn { 
     TotalFuelOutput2.text = "\(TFO004)" 
    } 
    else {TotalFuelOutput2.text = "\(TFO000)"} 


    // *Self Reminder* Calculation for Trip Fuel Adjust with various TDP Loaded 

    if mainbutton.isOn && fwdbutton.isOn && aftbutton.isOn { 
     TripFuelOutput2.text = "\(TripF012)" 
    } 
    else if fwdbutton.isOn && aftbutton.isOn { 
     TripFuelOutput2.text = "\(TripF012)" 
    } 
    else if mainbutton.isOn && fwdbutton.isOn { 
     TripFuelOutput2.text = "\(TripF011)" 
    } 
    else if mainbutton.isOn && aftbutton.isOn { 
     TripFuelOutput2.text = "\(TripF010)" 
    } 
    else if aftbutton.isOn { 
     TripFuelOutput2.text = "\(TripF006)" 
    } 
    else if fwdbutton.isOn { 
     TripFuelOutput2.text = "\(TripF007)" 
    } 
    else if mainbutton.isOn { 
     TripFuelOutput2.text = "\(TripF004)" 
    } 
    else {TripFuelOutput2.text = "\(TripF000)"} 

    //---- 
    let fourthValue = Double(TotalFuelOutput2.text!) 
    let fifthValue = Double(TripFuelOutput2.text!) 

    let RampWeight1 = Double(firstValue! + secondValue!) 
    let TOW1 = Double(RampWeight1 - 1) 
    let LMass1 = (TOW1 - thirdValue!) 

    let RampWeight2 = Double(firstValue! + fourthValue!) 
    let TOW2 = Double(RampWeight2 - 1) 
    let LMass2 = (TOW2 - fifthValue!) 

    // *Self Reminder* Calculation for center figuers with no TDP adjustments 

    RampOutput1.text = "\(RampWeight1)" 
    TOWOutput1.text = "\(TOW1)" 
    LandOutput1.text = "\(LMass1)" 

    // *Self Reminder* Calculation for right hand side figures using new TotalFuelOutput2 & TripFuelOutput2 

    RampOutput2.text = "\(RampWeight2)" 
    TOWOutput2.text = "\(TOW2)" 
    LandOutput2.text = "\(LMass2)" 

} 
0

は、テキストフィールドで返される値を確認しています。それらがゼロでないことを確認して、二重浮動小数点数の適切な範囲の数字に最初の文字(先行する空白などなし)から適切に変換できます。または、Double()変換によってエラーがスローされることがあります。