- 更新日: 2015年6月1日
- Swift & iOS
Swiftでファイル読み込み&1行ずつ処理
Swiftで CSV ファイルなどを読み込んで、1行ずつ文字列を split で分割する処理の例です。String#enumerateLines() と split() を使って書きましたが、これだけの処理ですけど書くのに苦労しました…。
— 環境 —
Swift 1.2
Xcode 6.3.2
書いた Swift コード
名前、性別、出身地、職種からなる CSV データのファイルがあったとします。以下のような内容です。
/path/to/data.csv
1 2 3 4 5 |
Mike,male,US,Engineer Yumi,female,Japan,Designer David,male,,Marketing |
David の出身地のデータが空になってることに注意。
上述の CSV ファイルを読み込んで、1行ずつ処理する Swift コードです。1行をそのまま出力した後、split を使い ‘,’(カンマ)で区切って、配列のデータを出力しています。
1 2 3 4 5 6 7 |
let filePath = "/path/to/data.csv" let data = NSString(contentsOfFile: filePath, encoding: NSUTF8StringEncoding, error: nil) as! String data.enumerateLines { (line, stop) -> () in println(line) let item: [String] = split( line, allowEmptySlices: true, isSeparator: { $0 == "," } ) println(item) } |
ビルドして Xcode コンソールで実行結果を確認。
1 2 3 4 5 6 7 8 |
Mike,male,US,Engineer [Mike, male, US, Engineer] Yumi,female,Japan,Designer [Yumi, female, Japan, Designer] David,male,,Marketing [David, male, , Marketing] |
注意点など
String#enumerateLines() で1行ずつ処理するには、クロージャのコードブロック内で処理を行う。ブロック引数の line に1行ずつのデータが渡されるのでそれを処理する。
split() では、allowEmptySlices, isSeparator の名前付き引数を指定します。allowEmptySlices を true に指定すると、配列内に空の要素が入るのを許可する意味となります。allowEmptySlices が false の場合、配列内の空の要素が削除されるようです。
また allowEmptySlices の指定を省略すると、デフォルトでは false になるみたい。最初、allowEmptySlices の指定を省略していたら、David の出身地データ(空の要素)が削除されて [David, male, Marketing] と出力されました。
split() の isSeparator には、分割する文字列を Boolean の判定で指定する。今回はカンマ区切りだったので “,” を指定しました。
- – 参考リンク –
- Using String’s enumerateLines function in Swift – Stack Overflow
- [Swift] CSVファイルの読み込み | Network Notebook
- swift – split now complains about missing “isSeparator” – Stack Overflow
- Swift & iOS の関連記事
- WKWebView/UIWebViewでウェブページが真っ白
- Unityのインストールと初期設定
- WKWebView/UIWebViewでNavigation Barの下にウェブページが隠れるのを回避
- SwiftでArray(配列)などをシャッフル
- Navigation Controllerで画面遷移させるSwiftコード
- Swiftでタップ/スワイプのイベント処理実装・UITapGestureRecognizerとUISwipeGestureRecognizer
- UIPageViewController画面下部のUIPageControlを非表示にする
- Swiftのバージョン確認・REPL実行
- Xcode7.0アップデートで遭遇した課題2つ
- 正規のXcodeかどうかチェック(XcodeGhostマルウェア騒動)
Leave Your Message!