如何在字典数组中的内部数组中应用过滤器?

时间:2017-05-27 04:28:40

标签: ios swift dictionary filter

我有一种情况,比如我有一系列字典,其中每个键都有特定对象的数组。像这样。

from time import sleep

import msvcrt

def blink():
    print('Hit enter to quit')
    if msvcrt.kbhit():
        if msvcrt.getch() == "\r":
            return True
    return False

done = False

while not done:
    done = blink()
    sleep(1)

所以我必须在这个内部数组上应用过滤器。但我无法更新最终数组中的值。 我写了这段代码。

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

tableViewSource = [String : [FruitsData]]

就像我已删除其id已被删除的数组中的那些值。

例如,如果我在数组中有这些值。

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

    }

1 个答案:

答案 0 :(得分:2)

首先tableViewSource不是Dictionary的Array,它是Dictionary,每个键都有Array作为值。同样来自您的示例id不是nil而是empty,如果您想删除身份为FruitsDatanil empty的{​​{1}}对象就像这样。

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