###前提・実現したいこと
swiftでクイズアプリを作成しています。各問題では選択肢ボタンを押すと次の問題に移行するシステムにしています。時間制も設けており同じく制限時間を過ぎると次の問題に移行します。
問題なのが、3,4問(タイミングはランダム)を過ぎてから、ボタンを押すor制限時間を越えるとアプリが落ちてしまいます。
###発生している問題・エラーメッセージ
fatal error: Array index out of range
既存のアプリを参考に作成しており、それとの変更点は2つあります
①クイズの画面でされるtextviewを1→6つに増やしている。
csvファイルのテキストデータは、","ごとに設問、正解番号、選択肢の順に設定しているのですが
###csvファイル変更前
一般的に胃腸の働きを弱めてしまう効果があるので、「天ぷら」と食べ合わせが良くないとされている食べ物は次のうちどれか?,1,スイカ,梅干し,ゆで卵,ソーセージ
上記の設問に当たるところを5つ増やし、連想クイズのようなものにしています
###csvファイル変更後
ゴリラ,りんご,黄色,朝ごはん,皮,スリップ,2,卵焼き,バナナ,鶏肉,雨
csvファイルの","で区切られた要素はtargetProblemという配列に格納されていたため、その配列に新しく作ったtextviewを5つ、targetProblem[1]〜[5]として宣言し、解答番号と選択肢のインデックスはそれぞれ5ずつ後ろにずらしました
###該当のソースコード
swift
1@IBOutlet var keyword: UITextView! //textviewを5つ分増やす 2@IBOutlet var keyword2: UITextView! 3@IBOutlet var keyword3: UITextView! 4@IBOutlet var keyword4: UITextView! 5@IBOutlet var keyword5: UITextView! 6@IBOutlet var keyword6: UITextView! 7 8keyword.text = targetProblem[0] as! String //targetProblem[1]〜[5]にkeyword2〜6.text 9keyword2.text = targetProblem[1] as! String 10keyword3.text = targetProblem[2] as! String 11keyword4.text = targetProblem[3] as! String 12keyword5.text = targetProblem[4] as! String 13keyword6.text = targetProblem[5] as! String 14 15 16//選択肢であるtargetProblem[2,3,4,5]→[7,8,9,10] 17answerButtonOne.setTitle("1." + String(describing: targetProblem[7]), for: UIControlState()) 18answerButtonTwo.setTitle("2." + String(describing: targetProblem[8]), for: UIControlState()) 19answerButtonThree.setTitle("3." + String(describing: targetProblem[9]), for: UIControlState()) 20answerButtonFour.setTitle("4." + String(describing: targetProblem[10]), for: UIControlState()) 21 22 23 24
###バグの原因
Thread1にはkeyword2.text = targetProblem[1] as! StringがEXC_BREAKPOINTだと述べてありましたが、なぜこの宣言が問題なのかわかりません。
回答2件
あなたの回答
tips
プレビュー