2017-05-27 11 views
0

私は辞書の配列を持っているような状況があります。各キーには特定のオブジェクトの配列があります。このような。ディクショナリの配列内の配列にフィルタを適用する方法は?

// example setup 
    struct FruitsData { 
     var name: String? 
     var id: String? 
    } 

tableViewSource = [String : [FruitsData]] 

ですから、この内側の配列にフィルタを適用する必要があります。最終的な配列の値を更新することができません。 私はこのコードを書いています。

tableViewSource = tableViewSource.filter { (dictData: (key: String, value: [FruitsData])) -> Bool in 
    var arrFruitsData = dictData.value 
    arrFruitsData = arrFruitsData.filter{ ($0.id != nil) } 

    if arrFruitsData.count == 0 { 
     self.tableViewHeaders = self.tableViewHeaders.filter { $0 != dictData.key } 
    } 
    return true 

    } 

私はidが削除された配列内の値を削除しています。

たとえば、配列にこれらの値がある場合。全てtableViewSource

var array = ["A": [FruitsData(name: "apple", id: "5"), FruitsData(name: "apricot",id: "")], "M": [FruitsData(name: "mango", id: "9"), FruitsData(name: "grapes", id: "")]] 

答えて

2

まず辞書のArrayないが、それは値として各鍵有するアレイとDictionaryあります。あなたがnilまたはemptyのidを持つFruitsDataのオブジェクトを削除したい場合は、idの例もnilではなく、emptyであるので、このようにすることができます。

var tableViewSource = [String : [FruitsData]]() 
tableViewSource.forEach { 
    let res = $1.filter { $0.id != nil && $0.id != "" } 
    tableViewSource[$0] = res 
} 
+0

ありがとうございました。私の問題を解決しました。これは辞書の配列ではありませんか? – user1960279

+0

@ user1960279ようこそメイト:)はい辞書の配列ではありませんそれは配列としてすべての値を持つ辞書です –

関連する問題