質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

Q&A

解決済

2回答

5897閲覧

EXC_BAD_INSTRUCTION(code=EXC_1386_INVOP.subcode=0x0)の解決策を教えて頂きたいです。

yuzacky

総合スコア13

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

0グッド

2クリップ

投稿2016/05/26 13:42

世界一受けたいiPhoneアプリ開発の授業を参照にして四択クイズアプリ開発を勉強しています。
ビルドは成功するんですが、最後まで到達するときもあれば、途中でバグが起こることがあります。
■■な機能を実装中に以下のエラーメッセージが発生しました。

###発生している問題・エラーメッセージ

下記の answerBtn1.setTitle(mondaiArray[2], forState: .Normal) の横にThread 1:EXC_BAD_INSTRUCTION(code=EXC_1386_INVOP.subcode=0x0)と記されています。

###該当のソースコード
mondaiArray = csvArray[mondaiCount].componentsSeparatedByString(",")
//変数mondaiCountに1を足してラベルに出題数を設定。
mondaiNumberLabel.text = "第(mondaiCount+1)問"
//TextViewに問題を設定
mondaiTextView.text = mondaiArray[0]
//選択肢ボタンのタイトルに選択肢を設定
answerBtn1.setTitle(mondaiArray[2], forState: .Normal)
answerBtn2.setTitle(mondaiArray[3], forState: .Normal)
answerBtn3.setTitle(mondaiArray[4], forState: .Normal)
answerBtn4.setTitle(mondaiArray[5], forState: .Normal)

###試したこと
CSVの内容に問題があると思い、なんども確認をしましたが発見できず。うまくいくときといかないときがあるのは何故か変わらない状況です。

###補足情報(言語/FW/ツール等のバージョンなど)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

mondaiArrayを宣言する行で、mondaiCountに入っている値を確認してください

エラーメッセージは
この配列にはそんなポイントは用意されていないよということです

投稿2016/05/27 08:01

Akirana

総合スコア59

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

EXC_BAD_INSTRUCTIONのエラーメッセージは、その行で例外が発生して実行が中断したということが書かれているだけで、そこにはエラー原因を示す情報はありません。そのエラーメッセージが表示された時は、たいてい右下のOutputウインドウに原因を示すエラーメッセージが表示されますので、まずはそれを読んでください。エラーメッセージの意味がわからなければ、そのメッセージ内容をそのままWebで検索すると、同様のエラーを解決した例を書いてくれている人がいたりしますので、エラーの意味がわかりやすくなります。
今回のエラーは
answerBtn1.setTitle(mondaiArray[2], forState: .Normal)
で例外が発生したとのことですので、この情報だけから推測すると
1.answerBtn1がnil
2.mondaiArrayに格納されている配列要素数が2以下
のいずれの状態になっていると考えられます。
例外が発生している状態で、変数ウインドウを見るか変数出力コマンドで変数の内容を出力するかして、それぞれの変数の内容を確認したら、今度はなぜその変数が意図しない状態になっているかを観点に調べればよいです。

投稿2016/05/26 15:31

編集2016/05/26 15:45
TakeOne

総合スコア6299

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yuzacky

2016/05/26 16:03

ご指導ありがとうございます。Outputウインドウのエラーメッセージはfatal error: Array index out of rangeです。調べてみます。
TakeOne

2016/05/29 08:33 編集

「fatal error: Array index out of range」が出ているのであれば、「2.mondaiArrayに格納されている配列要素数が2以下」だったということです。なぜmondaiArrayの配列の要素数が2以下になっているかというと、 「mondaiArray = csvArray[mondaiCount].componentsSeparatedByString(",") 」の処理でcsvArray[mondaiCount]に入っている文字列にカンマ(,)が2個以上なかったということです。なのでcsvArrayの配列にどんな文字列が格納されているか確認してください。 おかしな文字列が入っていたら、なぜそのようなおかしな文字列が入っているのかを観点に調べてください。おかしな文字列というよりも、1行の中に文字列が何も入っていない空行が存在している可能性もあると思います。
yuzacky

2016/05/29 12:05

ご指導ありがとうございます。NumbersからCSVに変換したときに、コンマ(,,,,,)が所々ありまして、消去し再確認したんですが・・・うまくいきません。 Arg[0]=Exploded,Arg[1]=Exploded,Arg[2]=Dead,,,ですね。 CSVファイルを再度確認してみます。
TakeOne

2016/05/29 13:04

CSVファイルを確認するより前に、エラーで停止している状態でmondaiArrayとcsvArrayの内容がどのように格納されているか、変数の内容を変数ウインドウや変数出力コマンドで確認すべきだと思いますよ。 正しく作ったCSVファイルの読み込み処理が何かおかしくて正しく読めてない可能性だってあるのですから。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問