如何显示decks.status == true的数据,并忽略设置为false的对象?
数据:

var decks: [DeckOfCards]

我现在得到的是:
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as TableViewCell

    if (thedeck.decks[indexPath.row].status == true) {
        cell.label.text = "\(thedeck.decks[indexPath.row].card.name)"
    }
}

最佳答案

你这样做是不对的。当您到达cellForRowAtIndexPath时,您已经声明一个单元格应该为这个索引路径(因此在数据数组中的这个索引处)退出队列。进行此筛选的正确位置在数据源中。
例如,除了decks数组之外,还可以生成计算属性(filteredDecks),该属性通过过滤decks数组来获取其值。

var decks = [DeckOfCards]
var filteredDecks: [DeckOfCards] {
    return decks.filter { $0.status }
}

然后可以将此属性用作表视图的数据源。
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return filteredDecks.count
}

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath)
    cell.label.text = "\(filteredDecks[indexPath.row].card.name)"

    return cell
}

现在,由于这个解决方案在每个属性访问上计算filteredDecks数组,如果decks是一个大数组,或者您经常重新加载表视图,那么它可能不是最好的方法。如果是这种情况,并且可以这样做,那么您应该首选使用上面computed属性中显示的相同方法提前过滤decks数组。

关于swift - 如何仅显示表格中的过滤数据,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31489461/

10-11 19:49