我有一种情况,比如我有一系列字典,其中每个键都有特定对象的数组。像这样。
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
}
答案 0 :(得分:2)
首先tableViewSource
不是Dictionary的Array
,它是Dictionary
,每个键都有Array作为值。同样来自您的示例id
不是nil
而是empty
,如果您想删除身份为FruitsData
或nil
empty
的{{1}}对象就像这样。
var tableViewSource = [String : [FruitsData]]()
tableViewSource.forEach {
let res = $1.filter { $0.id != nil && $0.id != "" }
tableViewSource[$0] = res
}