Swift 如何在两个相等的变量上筛选UITableViewCell
我想在Swift 4中填充UITableView,只想显示属于登录用户的记录。显然,我需要一个Swift 如何在两个相等的变量上筛选UITableViewCell,swift,uitableview,Swift,Uitableview,我想在Swift 4中填充UITableView,只想显示属于登录用户的记录。显然,我需要一个IF语句来查看两个值是否相等。如何返回null,即不向表中添加单元格。请参阅下面的代码 func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { guard let cell = tableView.dequeueReusableCell(wi
IF
语句来查看两个值是否相等。如何返回null
,即不向表中添加单元格。请参阅下面的代码
func tableView(_ tableView: UITableView,
cellForRowAt indexPath: IndexPath) -> UITableViewCell {
guard let cell = tableView.dequeueReusableCell(withIdentifier:
"RunCell") as? RunCell else { return UITableViewCell() }
let user_id_main = String(MainMenuViewController.myVariables.user_id.prefix(2))
if (user_id_main==runs[indexPath.row].user_id)
{
cell.idLbl.text = "ID: " + runs[indexPath.row].run_id
cell.dateLbl.text = "Date: " + runs[indexPath.row].date_of_run
return cell
}
return cell
}
我知道
返回单元格
在之外,如果
仍然会返回单元格,这是直到我找到答案为止。这不是uitableview的工作方式。您无法即时决定是否显示单元格。您需要在加载或重新加载表之前执行此操作
在加载或重新加载tableView之前,请将数组筛选到一个新数组中,该数组只包含具有匹配用户id的记录。然后使用这个新数组作为表的模型。新数组的大小将决定表中的行数,每行对应于新数组的一项
每次user\u id\u main
更改时,重新筛选运行的数组并重新加载表。您不能返回空值单元格
要实现所需的功能,请首先筛选运行
数组中所需的值,并将其存储在其他数组中,例如mainUserRuns
,然后使用此新数组为tableview提供数据。self.runsFilter.append(self.runs)
我试图添加到runsFilter
中,但它说无法将“[Run]”类型的值转换为预期的参数类型“Run”
,我在这里做错了什么?请尝试self.runsFilter=self.runs.filter{$0.Run\u id==user\u id\u main}