Требования к операционной системе: 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
См. также: