Swiftでファイル読み込み&1行ずつ処理

スポンサーリンク
スポンサーリンク
【お知らせ】 英単語を画像イメージで楽に暗記できる辞書サイトを作りました。英語学習中の方は、ぜひご利用ください!
画像付き英語辞書 Imagict | 英単語をイメージで暗記
【開発記録】
英単語を画像イメージで暗記できる英語辞書サービスを作って公開しました

Swiftで CSV ファイルなどを読み込んで、1行ずつ文字列を split で分割する処理の例です。String#enumerateLines() と split() を使って書きましたが、これだけの処理ですけど書くのに苦労しました…。

— 環境 —
Swift 1.2
Xcode 6.3.2

スポンサーリンク

書いた Swift コード

名前、性別、出身地、職種からなる CSV データのファイルがあったとします。以下のような内容です。

/path/to/data.csv

David の出身地のデータが空になってることに注意。

上述の CSV ファイルを読み込んで、1行ずつ処理する Swift コードです。1行をそのまま出力した後、split を使い ‘,’(カンマ)で区切って、配列のデータを出力しています。

ビルドして Xcode コンソールで実行結果を確認。

注意点など

String#enumerateLines() で1行ずつ処理するには、クロージャのコードブロック内で処理を行う。ブロック引数の line に1行ずつのデータが渡されるのでそれを処理する。

split() では、allowEmptySlices, isSeparator の名前付き引数を指定します。allowEmptySlices を true に指定すると、配列内に空の要素が入るのを許可する意味となります。allowEmptySlices が false の場合、配列内の空の要素が削除されるようです。

また allowEmptySlices の指定を省略すると、デフォルトでは false になるみたい。最初、allowEmptySlices の指定を省略していたら、David の出身地データ(空の要素)が削除されて [David, male, Marketing] と出力されました。

split() の isSeparator には、分割する文字列を Boolean の判定で指定する。今回はカンマ区切りだったので “,” を指定しました。

スポンサーリンク
スポンサーリンク
 
Twitterを使っていますのでフォローお願いたします!ブログの更新情報もつぶやいてます^^
(英語学習用)

Leave Your Message!