你好,我是Swift的新手,在过滤数组后遇到问题,无法将其更新到tableview中
我尝试使用for k2,v2 in dic2.items():
if 'hockey' in v2:
position = v2.index('hockey')
for k3,v3 in dic3.items():
if k2==k3:
weight = v3[position]
print(weight)
,但是我不知道如何更新 [{'comp': ['akshay', 'swapnil', 'parth','juhi'], 'weight': 45},
{'comp': ['gaurav', 'geeta'], 'weight': 70}]
不起作用。
这些代码是用button的IBAction方法编写的。我想在点击按钮时使用过滤器更新表格视图,但收到如下警告
未调用“过滤器”的结果
filter()
就我的研究而言,我发现我需要更改CellforRows函数,但我不知道该怎么做。
请帮助。
tableview.reloadData()
答案 0 :(得分:2)
警告本身说,您需要使用如下所示的过滤器结果...
hotelArray = hotelArray.filter {$0.star == 1}
您需要将hotelArray
设为var
。
答案 1 :(得分:1)
filter
是高阶函数,可以快速使用它过滤出一个数组。以下是可用于解决问题的代码。
hotelArray = hotelArray.filter { (obj) -> Bool in
return obj.star == 1
}
或
hotelArray = hotelArray.filter { $0.star == 1 }
答案 2 :(得分:0)
仅使用一个数组将无法像(hotelArray = hotelArray.filter {$0.star == 1}
)
否则,您需要维护2个数据数组,只有第一次过滤的数据才是正确的,之后才是正确的。 取一个unFilteredHotelsData数组,然后取第二个filterHotelsData数组作为tableview的数据源。
然后,每次更改评级过滤器时都需要getFilteredData
filteredHotelsData = unFilteredHotelsData.filter { $0.star == 1 }
tableView.reloadData()
并在委托方法tableView(_:numberOfRowsInSection:)
中返回filteredHotelsData.count