【Swift】CSVファイルを使ってデータの入出力を行う。(Swift 2.1、XCode 7.2)

2020年6月16日

CSVファイルとは

本記事ではCSVファイルを用いてデータを入出力する方法について説明する。

CSVファイルとは、Comma Separated Valuesの略で、データをカンマ区切りで並べたファイルのことをいう。アプリで利用する可変データをCSVファイルで用意し、アプリ起動時に読み込んだり、次回起動時のために出力したりして利用する。

データ永続化の観点ではCore Dataでも同じことができるが、CSVファイルのほうが手軽に編集できる。また、他のアプリにデータを渡すときもCSVファイル1つを渡すだけでいいので取り扱いが楽だ。

山田,25,野球部
田中,30,野球部
近藤,33,サッカー部

 

以下のコードのように、アプリで利用するデータをソースコードに直接定義した場合、データ変更時にソースコードを編集する必要があるのと、アプリ使用中にデータを変更して保存することができない。

かといって、データベースを利用するほどのデータでもない。そんなときに利用できるのがCSVファイルである。

 

CSVファイルを読み込む

実際にCSVファイルを読み込んで使ってみよう。

以降の手順を行う前のXcodeプロジェクトをGitHubに置いたので、試してみる人はご利用下さい。
⇒「テスト用プロジェクト

ソースコードに記述された部活データをテーブルビューに表示するものを実装しておいた。この部活データをCSVファイルから読み込むように変更する。

 

以下のコードは変更前のViewController.swift

 

メニューから「File」⇒「New」⇒「File…」を選択する。

新規ファイルを作成する。

 

テンプレートを選択する画面が表示されるので、「iOS」⇒「Other」⇒「Empty」を選択し、「Next」ボタンを押す。

テンプレートからEmptyを選択する

 

ファイル名を入力する画面が表示されるので、Save Asに「sample.csv」、Whereにプロジェクトフォルダを設定して「Create」ボタンを押す。

ファイル名を入力する。

 

追加されたCSVファイル(下図赤枠)を選択し、黄緑枠の編集欄にCSVのデータを入力する。

CSVデータを入力する

 

以下は入力するデータ

1,3A,野球部
2,2B,サッカー部
3,6C,テニス部

 

ViewController.swiftを以下のコードに変更する。ViewDidLoadメソッドでCSVファイルのデータを読み込み、改行区切りで部活配列に格納している。

デリゲートメソッドの「データを返すメソッド」が呼び出されたら、部活配列から抽出したデータをカンマ区切りで分割し、ラベルに設定している。

 

以下は実際のプレイ動画。ソースコードに直接書いていたデータをCSVファイルから読み込むようにしただけなので、外見上の動きは変更前と変わらない。

CSVファイルを出力する

次回起動時の読み込みデータを変更するために、アプリ内からCSVファイルを更新したいことがある。

テーブルビューに表示されている部活を削除したときに、CSVデータが更新されるものを実装してみよう。

ユーザーデータを保存するDocumentsフォルダにCSVファイルを保存する。アプリ起動時にDocumentsフォルダにsample.csvが存在するかを確認し、存在する場合はそのデータを読み込み、存在しない場合はプロジェクトに最初から格納されているsample.csvを読み込むようにする。

CSVを読み込む

 

ViewController.swiftを以下のコードに変更する。

テーブルビューからデータを削除すると同時にDocumentsフォルダにsample.csvを出力している。部活をすべて削除した場合はDocumentsフォルダのsample.csvを削除する。

 

以下は実際のプレイ動画