大阪市中央区 システムソフトウェア開発会社

営業時間:平日09:15〜18:15
MENU

SwiftUI沼でゆっくり浸る 組込みCSVFileから読み込む

著者:川上洋
公開日:2022/08/02
最終更新日:2022/08/02
カテゴリー:技術情報 雑記
タグ:

こんにちは、川上です。

前回分に書いた
 該当サイトからLoadした郵便番号File.Zipを解凍したCSVを内蔵アプリに組み込んだ実ファイルから・・
の、ざっとの処理の流れは。。

Myアプリに組み込んだCSVファイルから読み込んだ1行毎にある郵便番号内容データをString配列に作成。
で、そこから、detail-viewの表示用Arryの作成
です。

内臓に組み込んだCSVFile名の”27OSAKA.CSV”を引数にして、

//MARK: +++ CSVファイルの読み込みメソッド。引数にファイル名、返り値にString型の配列。
    func loadCSV(_ filename:String)->[String]{
        //CSVファイルを格納するための配列を作成
        var csvArray:[String] = []
        //CSVファイルの読み込み
        let csvBundle = Bundle.main.path(forResource: filename, ofType: "CSV")
        
        do {
            //csvBundleのパスを読み込み、shiftJISに文字コード変換して、NSStringに格納
            let csvData = try String(contentsOfFile: csvBundle!,
                                     encoding: String.Encoding.shiftJIS)
            //改行コードが"\r"で行なわれている場合は"\n"に変更する
            let lineChange = csvData.replacingOccurrences(of: "\r", with: "\n")
            //"\n"の改行コードで区切って、配列csvArrayに格納する
            csvArray = lineChange.components(separatedBy: "\n")
        }
        catch {
            print("csv load エラー")
        }
        return csvArray
    } // === load csv

CSVファイルから1行分を取得できれば、後は、ナンタラコンタラして、structデータに落として、表示用ArryからViewで、郵便番号と都道府県住所データをList表示するのでした。

で、大阪分の郵便番号行は、3849行持っているようなので、このままじゃ、使い難いwね。
ので、最後には欲しいデータ行の表示は、検索抽出したい形にしたいよね・・・でした。

ではでは。

    上に戻る