csvファイルを多次元配列に格納してそれぞれの要素の0番目をキー、1,2番目を配列で辞書に追加したいのですがコンパイルはうまくいくのですが、いざ実行してみると辞書に格納するところでエラーが出てしまいます。
csvファイルを配列に入れるところまではうまくいっていると思うのですが。
辞書のキーに配列を入れているからダメなんでしょうか?
説明が下手ですみません。ご回答宜しくお願いします。
csvファイル(ファイル名 sumple.csv)
野球部,1,3A
サッカー部,2,2B
テニス部,3,6C
プログラム
//辞書の値を配列にしています
var csvArray = String:[String]
override func viewDidLoad() { super.viewDidLoad() csvToArray() } func csvToArray () { //csvのファイルパスを取得 if let csvPath = Bundle.main.path(forResource: "smple", ofType: "csv") { do { //csvのファイルのデータを所得 let csvStr = try String(contentsOfFile:csvPath, encoding:String.Encoding.utf8) //csvファイルを改行区切りで配列に格納 let csvArr = csvStr.components(separatedBy: .newlines) for csvFile in csvArr { //csvファイルをカンマ区切りで多次元配列に格納 let csvSplit = csvFile.components(separatedBy: ",") //インデックス番号の0番目をキーにしてインデックス番号の1,2番目は配列にして辞書に追加 csvArray[csvSplit[0]] = [csvSplit[1],csvSplit[2]] ←ここでエラーが出ます print(csvSplit) ←ここでcsvSplitをprintしています。csvArrayではありません。 } } catch let error as NSError { print(error.localizedDescription) } } }
エラーメッセージ
Thread 1: EXC_BAD_INSTRUCTION(code=EXC_l386_INVOP,subcode=0x0)
csvSplitの出力結果
["野球部", "1", "3A"]
["サッカー部", "2", "2B"]
["テニス部", "3", "6C"]
fatal error: Index out of range
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。