0

我想换出表格视图的内容。数据源的元素带有一个标志,表示是否应该显示它们。

最终,我希望能够根据标志交换显示的内容。不过,就目前而言,我将确定以下问题的答案。

我的表如何只显示数据源的子集?

不是要求 [tableView 重新加载],这似乎是我的大多数搜索结果。我想根据标准(在本例中为标志)一次只显示一些数据源项。

为了清楚起见,这里是一个功能示例。


我们在一个数组中有 50 个 Friend 元素。它是我们表的数据源。当我们加载应用程序时,会显示所有 50 个朋友。

其中 20 个朋友在 Friend 类中被标记为“真棒”。当您点击 Awesome 按钮时,这 20 个将显示在表格中。

其中 10 个在 Friend 类中被标记为“Lame”。当您点击 Lame 按钮时,这 10 个将显示在表格中。


我需要查看哪些方法来实现这一目标?TableView 的讨论非常广泛,到目前为止,我一直在查看错误和错误,但没有令人满意的结果。

4

2 回答 2

3

您可以设置一个NSPredicate来过滤 fetchResults 将返回的值:

- (NSFetchedResultsController *)fetchedResults {
...

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"flag == %@", @"Awesome"];
    [fetchRequest setPredicate:predicate];  

...

这将只返回那些符合条件的记录NSPredicate

于 2013-02-27T01:30:28.860 回答
3

保留两个数据结构。第一个是主数据集。第二个仅包含您要显示的数据。将表格指向第二组数据。

基本上,当您想用不同的子集重新加载表时,创建一个新数组,迭代主数据集并将您想要的对象添加到新数组中。

由于第二个数组只引用了主数组中的原始对象,因此几乎没有额外的开销。

更新:为了扩展 Rob Napier 的评论,我提到的主数据结构将是“模型”,第二个数据结构将是支持表数据源的数据。

于 2013-02-27T01:31:12.897 回答