2017-02-10 9 views
0

変数labels04にUITextFieldの配列をインスタンス化しています。私はいくつかの計算を行うためにループします。計算の後、私はさらにアルゴリズムを計算するために配列のインデックスを使用しようとしますが、不正な命令エラーが発生します。ライン算術演算エラーでスタックする

gpacalcDivide = gpacalculate/convertIndexGPA 

@IBOutlet var labels04: [UITextField]! 
    var gpacalc1:Int = 0 
    var gpacalcDivide:Int = 0 
    var convertIndexGPA:Int = 0 

私はスレッド1を得る:EXC_BAD_INSTRUCTION(CODE = EXC_I386_INVOP、サブコードは0x0)

buttonContext 
    { 
    for label:UITextField in labels04 { 


    //calculations ... 

    gpacalculate = gpacalculate + gpacalc! 
    convertIndexGPA = labels04.index(of: label)! 
    gpacalcDivide = gpacalculate/convertIndexGPA 
    gpaTotalCalc.text! = "GPA: \(gpacalcDivide)" 
    } 
    } 

私は(それがlabels04.indexを使用して行うことを信じていますof:ラベル)!コマンド。コンソールには整数として表示されますが、その値を算術演算に使用しようとすると、不正な命令エラーが表示されます。

この問題を避ける方法はありますか?ありがとう

+0

「!」演算子を使用すると、「ここでクラッシュする」ことを覚えておいてください。オプションと安全なラッピングについて学んでください。 – rmaddy

答えて

2

forループの最初の反復中に、labels04.index(of: label)!は0(つまり最初のインデックス)になるはずです。次の行にあるgpacalcDivide = gpacalculate/convertIndexGPAには、0で割るとエラーになります。

+1

あなたは正しい – BestGiraffeNigeria