0

我提供了对包含数据项的 NSArray 的引用。在充当表格视图数据源的自定义视图控制器中,我解释每个项目并将其呈现为一个单元格。到目前为止,一切都很好。

现在我的同事要求实现一个过滤器,该过滤器将基于项目属性之一的值。此属性具有枚举值(其中 4 个)。所以当我应用过滤器时,我应该只看到与特定值匹配的项目。我的问题是我应该如何处理这些数据的过滤。

1)我是否应该将_data私有变量设置为指向原始数据源,然后覆盖“数据”属性getter以考虑过滤?

2) 我应该在我的控制器内生成一个单独的过滤数据数组吗?3)其他一些方法?

注意> coredata+fetched resultscontr。是不可能的。项目的数量永远不会超过 150-200。

4

2 回答 2

1

在我工作的应用程序中,我们有一个包含所有项目的数组和一个副本,它是数据源引用的那个。应用过滤器时,它会替换副本,但基于原始数组。所以我猜#2。

于 2012-12-06T15:24:47.493 回答
1

我会选择第二个选择。拥有filteredDatasource 更方便。这样,您不仅可以知道应该显示的单元格,还可以知道它们有多少等。此外,如果将来您想对它们进行排序并使用部分,您将更加灵活。

例如,当您– tableView:numberOfRowsInSection:使用过滤后的数据源实现在内部多次调用的方法时,您不必多次遍历数组的对象以查看其中哪些应该通过过滤器。你只要回来[filteredDatasource count]。这样更有效率。

于 2012-12-06T15:26:14.540 回答