はじめまして。
アプリ開発初心者です。
現在「世界一受けたい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
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。