2013-02-25 2 views
0

Я создаю приложение для представления данных о продажах. Структура основных данных выглядит следующим образомТабличные данные с использованием данных ядра - как эффективно фильтровать?

Product <---->> SaleAggregate 
Customer <---->> SaleAggregate 

SaleAggregate является общий объем продаж на единицу продукции, в расчете на клиента за определенный месяц. У этого объекта есть свойство «Месяц», «Год» и «Сумма».

Я пытаюсь отобразить это в текстовом формате следующим образом (отдельную таблицу для каждого клиента)

+---------+---------+---------+---------+---------+ 
| Product | 01/2011 | 02/2011 | 03/2011 | 04/2011 | 
+---------+---------+---------+---------+---------+ 
| Gizmo |  40 |  120 |  83 |  48 | 
| Widget |  92 |  38 |  37 |  36 | 
| Thingy |  12 |  84 |  29 |  40 | 
+---------+---------+---------+---------+---------+ 

Каждый клиент может иметь продаж регистрируется для любого количества продуктов, и мне нужно, чтобы получить все из этих продаж, как-то группировать их по продукту, а затем отображать каждый SalesAggregate «Amount» с соответствующим месяцем/годом.

Я могу легко получить все SalesAggregates для Клиента с NSPredicate и все уникальные Продукты, проданные клиенту с NSPredicate и , но я не совсем уверен, куда идти отсюда.

Таблица реализована с помощью UICollectionView, но я не совсем уверен, что логика должна заключаться в правильном значении в правой ячейке в cellForItemAtIndexPath. Это всего лишь случай извлечения каждого SalesAggregate в одном запросе, а затем фильтрация массива с помощью NSPredicate для правильного месяца/года для каждой ячейки, которую я хочу отобразить? Я думаю, что должен быть более умный способ сделать это.

Спасибо!

+0

Если я понимаю это право, пример объекта SalesAggregate, имеющего сумму, скажем, 40 это количество одного конкретного продукта купил одного конкретного клиента в определенный месяц? – Rakesh

ответ

0

Как насчет этого?

Используя предикаты и фильтрацию, вы можете получить следующее для конкретного клиента?

ProductArray: 
SalesAggreateDateArray: 

if section ==0 
     row==0 --> "Product" 
     rest of the rows --> [ProductArray objectAtIndex:indexPath.row] 
else if row ==0 
     sections --> [SalesAggregateDateArray objectAtIndex:indexPath.section] 
else 
     each cell --> [SalesAggregateAmountObjects filter with 
           date= date at row 0, indexPath.section and 
           product = product at section 0, indexPath.row] 
Смежные вопросы