SwiftUI沼でゆっくり浸る 郵便番号Detail用表示ネタの作成
こんにちは、川上です。
郵便番号のcsv.ZipのLoadから、解凍→CSVのArryができて、だいたいで、アプリ作成ネタが揃えてきたので、PostNumberToMapアプリをボチボチで大凡の骨川筋右衛門の形を作っていきました。
まずは、Detailの表示ArryのType形から。。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | // 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の追加
1 2 3 4 | class PostNumberViewModel:ObservableObject { @Published var postArry: [stPostNumber] = [] // 郵便番号、住所データの型 arry } |
先前にCSVのArryから、postArryへの流し込み
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | // 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へと繋がす道へと続くでした。
こんな感じのの動作です。
ではでは。