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

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

SwiftUI沼でゆっくり浸る sortするSection付きList表示用Arry

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

こんにちは、川上です。

アプリのMaster-Detail型のMaster-viewの都道府県名(section付きlist表示用arryから)を検索する件の続きです。

// MARK: === 検索 & Filter
 let retTpl = vm.getSortHitArry_All(item_idx,self.searchText)

検索結果が、結構多いタプルでレスになってます。
戻ってるデータの概要は、
var aleas :[String] = [] ・・エリア名(東北、関東、関西・・・)
var childs :[String] = []・・ エリア内の都道府県名
var aleasidxs :[Int] = []・・ エリア位置のDetail-viewへの連携用
var childsidxs :[Int] = []・・エリア内の都道府県名位置のDetail-viewへの連携用
です。

 func getSortHitArry_All(_ keyIndex:Int,_ searchText:String )
        -> (Aleas:[String]
            ,Childs:[String]
            ,AreasIdxs:[Int]
            ,ChildsIdxs:[Int] )
    {
      
        var aleas :[String] = []
        var childs :[String] = []
        var aleasidxs :[Int] = []
        var childsidxs :[Int] = []

        let  results = tofukenAreaArry_Datas[keyIndex].postss.filter
        {
            searchText.isEmpty
            || $0.name
                .lowercased()
                .contains(searchText.lowercased())
        }

        if results.count > 0 {
            aleas.append(tofukenAreaArry_Datas[keyIndex].area)
            aleasidxs.append(keyIndex)
        }

        if results.count > 0 {
            for res in results {
                childs.append(res.name) 
                
                for (idx,_) in tofukenAreaArry_Datas[keyIndex].postss.enumerated() {
                  
                    let pst = tofukenAreaArry_Datas[keyIndex].postss[idx]
                    if res.name == pst.name {
                        childsidxs.append(idx)
                        break
                    }
                } 
            } 
        } 
        return (Aleas:aleas,Childs:childs,AreasIdxs:aleasidxs,ChildsIdxs:childsidxs)
    } 

その後、郵便番号のDetail-viewへの表示へと続くのでした。。

ではでは。

    上に戻る