Работа с объектом, представляющим собой основу для построения таблиц с данными

Требования к операционной системе: iOS 5.0 и выше.

Мобильное устройство: iPad.

Описание

В данном примере реализована работа с объектом, представляющим собой основу для построения таблиц с данными и его заголовками. После запуска примера выполняются следующие операции:

Исходный код

Для выполнения примера необходимо разместить в теле метода executeExample класса ViewController (см. раздел «Анализ данных») следующий код:

// Получаем объект, представляющий собой основу для построения таблиц с данными
SPPLPivot pivot = m_gridPivot;
// Получаем матрицу данных
SPPLDataSourceMatrix matrix = pivot->matrix();
// Получаем описание матрицы данных
SNString matrixDescription = matrix->description();
// Выводим описание матрицы
printf("Описание матрицы данных: %s\n", matrixDescription->UTF8String());
// Получаем источник данных
SPPLDataSource ds = pivot->dataSource();
// Устанавливаем агрегацию данных
ds->setIsAggregate(true);
// Устанавливаем источник данных
pivot->setDataSource(ds);
// Обновляем объект, представляющий собой основу для построения таблиц с данными
pivot->refresh();
// Перерисовываем диаграмму
[chart setNeedsRedraw];
// Выводим признак агрегирования данных
printf("Признак использования агрегирования данных: ");
printf(ds->isAggregate() ? "true\n" : "false\n");
// Получаем контейнер отметок по измерению
SPPLDimensionSelectionSet selectionSet = pivot->selectionSet();
// Получаем количество отметок по измерению
int selectionCount = selectionSet->selectionsCount();
// Получаем отметку по измерению
SPPLDimensionSelection selection = selectionSet->getSelectionByIndex(0);
// Получаем измерение
SPPLDimension dimension = selection->dimension();
// Удаляем отметку по указанному измерению
selectionSet->removeSelection(dimension->id());
// Устанавливаем контейнер отметок по измерению, если количество отметок было изменено
if(selectionCount != selectionSet->selectionsCount())
    pivot->setSelectionSet(selectionSet);
// Получаем копию заголовка объекта, представляющего собой основу для построения таблиц с данными
SPPLPivotHeader originalHeader = pivot->topHeader();
SNID header = originalHeader->copy();
SPPLPivotHeader headerCopy = header->qClass<PPLPivotHeader>();
// Выводим описание заголовка
SNString description = headerCopy->description();
printf("Описание копии заголовка: %s\n", description->UTF8String());
// Создаем заголовок
PPLPivotHeader newHeader1 = PPLPivotHeader::PPLPivotHeader();
// Получаем массив измерений заголовка
SNArray h1DimArray = newHeader1.dimensions();
// Выводим количество элементов массива
if(h1DimArray != NULL)
    printf("Количество измерений: %d\n", h1DimArray->count());
// Создаем заголовок для объекта, представляющего собой основу для построения таблиц с данными
SPPLPivotHeader newHeader2 = PPLPivotHeader::pivotHeader(originalHeader->relatedPivot());
// Выводим описание созданного заголовка
printf("Описание созданного заголовка: %s\n", newHeader2->description()->UTF8String());
// Получаем измерение копии верхнего заголовка
SPPLDimension dim1 = headerCopy->dimensions()[0]->qClass<PPLDimension>();
// Получаем измерение левого заголовка
SPPLDimension dim2 = pivot->leftHeader()->dimensions()[0]->qClass<PPLDimension>();
// Получаем измерение фиксированного заголовка
SPPLDimension dim3 = pivot->fixedHeader()->dimensions()[0]->qClass<PPLDimension>();
// Добавляем измерения в заголовок
headerCopy->putDimension(dim2);
headerCopy->putDimension(dim3);
// Перемещаем измерение вверх в заголовке
headerCopy->moveUp(dim3);
// Перемещаем измерение вниз в заголовке
headerCopy->moveDown(dim1);
// Выводим количество измерений в заголовке
printf("Количество измерений в заголовке: %d\n", headerCopy->dimensions()->count());
// Удаляем все измерения
headerCopy->removeAllDimensions();
// Выводим количество измерений в заголовке после удаления
printf("Измерения удалены\n");
printf("Количество измерений в заголовке: %d\n", headerCopy->dimensions()->count());
// Уничтожаем объект, представляющий собой основу для построения таблиц с данными
pivot->~PPLPivot();

В результате выполнения примера в консоль среды разработки выводится информация об объекте, представляющим собой основу для построения таблиц с данными и его заголовков:

Описание матрицы данных: Matrix size: 1775

Признак использования агрегирования данных: true

Описание копии заголовка: <NMutableArray:

id: CALENDAR_Y_ENG_533

name: Календарь

Elements tree:

Elements count: 11

>

Описание созданного заголовка: <NMutableArray:

>

Количество измерений в заголовке: 3

Измерения удалены

Количество измерений в заголовке: 0

См. также:

Примеры использования библиотеки pplib++