SwiftUI沼でゆっくり浸る 組込みCSVFileから読み込む
こんにちは、川上です。
前回分に書いた
該当サイトからLoadした郵便番号File.Zipを解凍したCSVを内蔵アプリに組み込んだ実ファイルから・・
の、ざっとの処理の流れは。。
Myアプリに組み込んだCSVファイルから読み込んだ1行毎にある郵便番号内容データをString配列に作成。
で、そこから、detail-viewの表示用Arryの作成
です。
内臓に組み込んだCSVFile名の”27OSAKA.CSV”を引数にして、
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | //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ね。
ので、最後には欲しいデータ行の表示は、検索抽出したい形にしたいよね・・・でした。
ではでは。