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

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

SwiftUI沼でゆっくり浸る 郵便番号Detail用表示ネタの作成

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

こんにちは、川上です。

郵便番号のcsv.ZipのLoadから、解凍→CSVのArryができて、だいたいで、アプリ作成ネタが揃えてきたので、PostNumberToMapアプリをボチボチで大凡の骨川筋右衛門の形を作っていきました。

まずは、Detailの表示ArryのType形から。。

// MARK: == 郵便番号、住所データの型
struct stPostNumber:Identifiable,Hashable {
    let id:String = UUID().uuidString
    var poststr:String  = ""        // 郵便番号
    var tofukenn_h:String = ""      // 都道府県名 半角カタカナ
    var sikuson_h:String  = ""      // 市区村名 半角カタカナ
    var tyoiki_h:String  = ""       // 町域 半角カタカナ
    var tofukenn_k:String = ""      // 都道府県名
    var sikuson_k:String = ""       // 市区村名
    var matison_k:String = ""       // 町村名
    
    var addr_full:String {
        get {
            // "-"の追加
            let pre_1 = String(poststr.prefix(3))
            let pre_2 = String(poststr.suffix(4))
            let s1  = pre_1 + "-" + pre_2
            
            let dstr = s1 + "\n" + tofukenn_k + sikuson_k + matison_k
            return dstr
        }
    }// == addr_full

} // == stPostNumber

で、ViewModelのPostNumberViewModel()にDetailの表示Arryの追加

class PostNumberViewModel:ObservableObject {
    @Published var postArry: [stPostNumber] = []    // 郵便番号、住所データの型 arry

}

先前にCSVのArryから、postArryへの流し込み

  // MARK: == 既存Zip Fileからのcsv dataの取得
    func getPostNumberArry2CSVArry(_ csvstrarry :[String]) {
        postArry.removeAll()
        for (_,csv) in csvstrarry.enumerated() {
            let csv2 = csv.substringSpaceTrim()
            if !csv2.isEmpty {
                // == "\""を削除
                let dcsv = csv.replacingOccurrences(of: "\"", with: "")
                var spritArry:[String] = []
                // == ","でCSVから分割しデータ取得
                spritArry = dcsv.components(separatedBy: ",")

                var post_dt = stPostNumber()
                post_dt.poststr =  spritArry[eCSV_DT.ePOSTNUM.rawValue]      // 郵便番号
                post_dt.tofukenn_h = spritArry[eCSV_DT.eTFKEN_H.rawValue]   // 都道府県名 半角カタカナ
                post_dt.sikuson_h = spritArry[eCSV_DT.eCKTS_H.rawValue]    // 市区村名 半角カタカナ
                post_dt.tyoiki_h = spritArry[eCSV_DT.eMERA_H.rawValue]    // 町域 半角カタカナ
                post_dt.tofukenn_k = spritArry[eCSV_DT.eTFKEN_K.rawValue]   // 都道府県名
                post_dt.sikuson_k = spritArry[eCSV_DT.eCKTS_K.rawValue]    // 市区村名
                post_dt.matison_k = spritArry[eCSV_DT.eMERA_K.rawValue]    // 町村名

                postArry.append(post_dt)
                
            } //  if !csv2.isEmpty
        } // ==  for (idx,csv) in loadcsvarry.enumerated()
        
        print("postArry.count =\(postArry.count)")
        
    } // == getPostNumberArry

でした。

これを、MasterからDetaileへと繋がす道へと続くでした。

こんな感じのの動作です。

ではでは。

    上に戻る