2012-12-06 53 views
0

我提供了一個對包含數據項的NSArray的引用。在作爲表視圖的數據源的自定義視圖控制器中,我解釋每個項目並將其呈現爲單元格。 目前爲止這麼好。減少在UITableViewController中提供的數據集合的方法

現在我的同事要求實現一個過濾器,該過濾器將基於其中一個項目屬性的值。 此屬性具有枚舉值(其中4個)。所以當我應用過濾器時,我應該只看到與特定值相匹配的項目。 我的問題是我應該如何處理這些數據的過濾。

1)我是否應該將_data專用變量設置爲指向原始數據源,然後覆蓋「data」屬性getter以考慮過濾?

2)我應該在控制器內部生成一個單獨的filteredData數組嗎? 3)其他一些方法?

注意> coredata + fetched resultscontr。是不可能的。項目的數量永遠不會超過150-200。

回答

1

我會去第二選擇。使用filteredDatasource更方便。通過這種方式,您不僅可以瞭解應該顯示的單元格,還可以知道它們的數量等等。此外,如果將來您想對它們進行排序並使用分區,那麼您將更加靈活。

例如,當您實施方法– tableView:numberOfRowsInSection:,在內部使用過濾的數據源多次調用時,您不必遍歷數組對象多次,以查看哪些應該通過過濾器。你只需返回[filteredDatasource count]。這樣更有效率。

1

在我工作的應用程序中,我們有一個所有項目的數組和一個數據源引用的副本。應用過濾器時,將替換副本,但是基於原始數組。所以我猜#2。