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

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

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

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

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

iPhone

iPhoneとは、アップル社が開発・販売しているスマートフォンです。 同社のデジタルオーディオプレーヤーiPodの機能、電話機能、インターネットやメールなどのWeb通信機能の3つをドッキングした機器です。

iOS 8

iOS 8(アイ・オーエス8)は、アップル社が2014年9月に発表したオペレーティングシステムです。iPhone 4sより対応しています。デザイン性の変更はなく、アプリや各種機能が強化されています。また、サードパーティ開発者のために、多くのAPIが開放されています。

Q&A

1回答

6741閲覧

EXC_BAD_INSTRUCTION (code=EXC _1386_INVOP,subcode0×0)というエラーが出てしまいます。

MH00214

総合スコア53

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

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

iPhone

iPhoneとは、アップル社が開発・販売しているスマートフォンです。 同社のデジタルオーディオプレーヤーiPodの機能、電話機能、インターネットやメールなどのWeb通信機能の3つをドッキングした機器です。

iOS 8

iOS 8(アイ・オーエス8)は、アップル社が2014年9月に発表したオペレーティングシステムです。iPhone 4sより対応しています。デザイン性の変更はなく、アプリや各種機能が強化されています。また、サードパーティ開発者のために、多くのAPIが開放されています。

0グッド

0クリップ

投稿2015/05/05 03:21

はじめまして。
アプリ開発初心者です。
現在「世界一受けたいiPhoneアプリ開発の授業」という本を参考にアプリ開発の勉強を進めております。本書はコードを書きながら学ぶスタイルなので、ひたすらコードを理解しながら写経をしている最中です。
先ほど「四択の検定アプリを作る」という章で解決しない問題が発生したので質問させていただきます。

スタート画面とその次の問題出題画面をviewcontrollerで作り、スタート画面と問題出題画面の一部をコーディングしてシミュレーターを動かしたところ

lang

1//csvBundleのパスを読み込み、UTF8に文字コード変換して、NSStringに格納 2 let csvData = NSString(contentsOfFile: csvBundle!, encoding: NSUTF8StringEncoding, error: &encodingError)!

ここの部分でプログラムが止まってしまいました。
何回か打ち直しましたが直らず、、という状況です。

エラーには
Thread1: EXC_BAD_INSTRUCTION (code=EXC _1386_INVOP,subcode0×0)
と出ています。

理解しながらコードを写経しているレベルなので、正直素人に毛が生えた程度の実力しか持ち合わせておりませんが、ご回答いただければ幸いです。
宜しくお願い致します。

現在書いているソースコードは下記になります。
(コードの内容は本に沿って写しているので、完成形からは少し離れているかもしれません。おそらく本の都合上、いろんなケースを示しながら最終的にアプリを作れるようにしていると思いますので。)

開発環境は
Xcode 6.3です。

lang

1// 2// ViewController.swift 3// VeseKentei 4// 5// Created by 堀正斉 on 2015/05/04. 6// Copyright (c) 2015年 堀正斉. All rights reserved. 7// 8 9import UIKit 10 11class ViewController: UIViewController { 12 13 @IBOutlet weak var logoImageView: UIImageView! 14 @IBOutlet weak var titleLabel: UILabel! 15 @IBOutlet weak var bodyTextView: UITextView! 16 @IBOutlet weak var startButton: UIButton! 17 @IBOutlet weak var creditLabel: UILabel! 18 19 20 override func viewDidLoad() { 21 super.viewDidLoad() 22 //loadCSVメソッドで配列csvArrayに読み込んだCSVファイルを格納 23 let csvArray = loadCSV("start") 24 //ImageViewに画像を設定 25 let img:UIImage = UIImage(named:csvArray[0])! 26 logoImageView.image = img 27 //titleLabelにアプリ名を設定 28 titleLabel.text = csvArray[1] 29 //bodyTextViewにアプリ説明文を設定 30 bodyTextView.text = csvArray[2] 31 //ボタンのタイトル文字を白色に設定 32 startButton.setTitleColor(UIColor.whiteColor(), forState: UIControlState.Normal) 33 //creditLabelにクレジットを設定 34 creditLabel.text = csvArray[3] 35 } 36 //CSVファイルの読み込みメソッド。引数にファイル名、返り値にString型の配列。 37 func loadCSV(filename :String)->[String]{ 38 //CSVファイルの読み込み 39 let csvBundle = NSBundle.mainBundle().pathForResource(filename, ofType: "csv") 40 //エラー値の設定 41 var encodingError:NSError? = nil 42 //csvBundleのパスを読み込み、UTF8に文字コード変換して、NSStringに格納 43 let csvData = NSString(contentsOfFile: csvBundle!, encoding: NSUTF8StringEncoding, error: &encodingError)! 44 //改行コードが"\r"で行なわれている場合は"\n"に変更する 45 let lineChange = csvData.stringByReplacingOccurrencesOfString("\r", withString: "\n") 46 //"\n"の改行コードで区切って、配列csvArrayに格納する 47 let csvArray = lineChange.componentsSeparatedByString("\n") 48 return csvArray 49 } 50 51 52 53 54 55 override func didReceiveMemoryWarning() { 56 super.didReceiveMemoryWarning() 57 // Dispose of any resources that can be recreated. 58 } 59 60 61} 62 63

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

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

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

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

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

guest

回答1

0

プロジェクトファイルの中にちゃんとstart.csvがあるか、またcsvファイルとloadCSV()の引数の名前が同じかどうか確認してみてください。

lang

1//loadCSVメソッドで配列csvArrayに読み込んだCSVファイルを格納 2 let csvArray = loadCSV("start") 3... 4(省略) 5//CSVファイルの読み込み 6 let csvBundle = NSBundle.mainBundle().pathForResource(filename, ofType: "csv") 7 8//csvBundleのパスを読み込み、UTF8に文字コード変換して、NSStringに格納 9 let csvData = NSString(contentsOfFile: csvBundle!, encoding: NSUTF8StringEncoding, error: &encodingError)!

let csvData でcsvBundle!となっているんですが、変数名の後に"!"がありますね。これは変数がnilではないことを表しているのですが(詳しくはOptionalを学びましょう)、もしnilであった場合にプログラムは止まってしまいます。ここで止まるということはcsvBundleにうまくファイルの読み込みができていないからだと思います。

ブレークポイントを使ったり、nilではないか判定するプログラムを書いたりすると多分csvBundleがちゃんと入っているか確認できるので試してみてください。

投稿2015/05/05 09:56

simorgh3196

総合スコア157

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問