我提供了对包含数据项的NSArray的引用。在用作表视图数据源的Custom View控制器中,我解释每个项目并将其显示为一个单元格。
到目前为止,一切都很好。
现在,我的同事们要求实现一个过滤器,该过滤器将基于项目属性之一的值。
该属性具有枚举值(其中4个)。因此,当我应用过滤器时,我应该只能看到与特定值匹配的项目。
我的问题是我应该如何处理这种数据过滤。
1)是否应该将_data私有变量设置为指向原始数据源,然后重写“ data”属性getter以考虑过滤?
2)我应该在控制器内部生成一个单独的filteredData数组吗?
3)还有其他方法吗?
注意> coredata + fetched resultscontr。毫无疑问。项目数量永远不会超过150-200。
最佳答案
我会选择第二个。拥有filteredDatasource更为方便。这样,您不仅可以知道应该显示的单元格,还可以知道它们的数量等等。而且,如果将来要对它们进行排序并使用节,您将更加灵活。
例如,当您使用过滤后的数据源实现内部多次调用的方法– tableView:numberOfRowsInSection:
时,不必遍历数组对象很多次即可查看其中哪个对象应该通过过滤器。您只需返回[filteredDatasource count]
。这样更有效。
关于objective-c - 减少UITableViewController中提供的数据集的正确方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13746303/