Требования к операционной системе: iOS 5.0 и выше.
Мобильное устройство: iPad.
В данном примере описываются некоторые приёмы работы с календарным измерением. После его запуска выполняются следующие операции:
определяется календарное измерение, его уровни данных;
определяется общее количество уровней данных, идентификатор базового уровня, а также идентификатор и наименование первого уровня данных;
создаётся периодическое календарное измерение, определяются его базовое измерение и настройки.
Для выполнения примера необходимо разместить в теле метода executeExample класса ViewController (см. раздел «Анализ данных») следующий код:
// Получаем все измерения данных
SNArray allDimensions = [self allDimensions];
for (int i = 0; i < allDimensions->count(); ++i) {
SPPLDimension dimension = allDimensions->objectAtIndex<PPLDimension>(i);
// Выбираем календарное измерение
if (dimension->type() == PPLDimension::kCalendarDimension) {
// Создаём календарное измерение
SPPLCalendarDimension calDim = new PPLCalendarDimension();
calDim = dimension->qClass<PPLCalendarDimension>();
// Получаем уровни данных календарного измерения
SPPLCalendarDimensionDataLevels levels = calDim->dataLevels();
// Определяем количество уровней данных
SNArray items = levels->items();
printf ("Количество уровней данных: %d \n", items->count());
// Получаем базовый уровень данных календарного измерения
SPPLCalendarDimensionDataLevel baseDataLevel = levels->baseDataLevel();
printf("Идентификатор базового уровня данных: %lld \n", baseDataLevel->id());
// Определяем идентификатор и наименование первого уровня данных
PPLCalendarDimensionDataLevel dataLevel = *items->objectAtIndex(0)->qClass<PPLCalendarDimensionDataLevel>();
printf("Идентификатор первого уровня данных: %lld \n", dataLevel.id());
SNString name = dataLevel.name();
printf("Наименование уровня данных: %s \n", name->UTF8String());
// Создаём контейнер уровней данных, используя конструктор по умолчанию
SPPLCalendarDimensionDataLevels dataLevels1 = new PPLCalendarDimensionDataLevels();
printf("Количество уровней данных в пустом контейнере: %d \n", dataLevels1->items()->count());
// Создаём уровень данных по умолчанию с идентификатором 5
SNDictionary description = NDictionary::dictionaryWithObjectForKey(NNumber::numberWithInt(5), NStr("id"));
SPPLCalendarDimensionDataLevel defaultDataLevel = PPLCalendarDimensionDataLevel::dataLevel(description);
// Создаём массив уровней данных
SNArray dataLevels = NArray::arrayWithObject(defaultDataLevel);
SPPLCalendarDimensionDataLevels dataLevels2 = new PPLCalendarDimensionDataLevels(dataLevels);
printf("Количество уровней данных во втором контейнере: %d \n", dataLevels2->items()->count());
for (int i = 0; i < dataLevels2->items()->count(); i++) {
SPPLCalendarDimensionDataLevel calDataLevel = dataLevels2->items()->objectAtIndex<PPLCalendarDimensionDataLevel>(i);
printf("Идентификатор уровня данных №%d: %lld \n", i, calDataLevel->id());
}
// Создаём периодическое календарное измерение
SPPLCalendarPeriodDimension periodDimension = new PPLCalendarPeriodDimension();
SPPLCalendarDimension baseDimension = periodDimension->baseDimension();
if (baseDimension != NULL) {
printf("Идентификатор базового уровня данных: %lld \n", baseDataLevel->id());
} else {
printf("Базовое измерение не определено \n");
}
// Получаем настройки периодического календарного измерения
SNID plist = periodDimension->generatePlist();
if (plist != NULL) {
SNDictionary plistDict = plist->qClass<NDictionary>();
} else {
printf("Список настроек периодического календарного измерения пуст");
}
}
}
В результате выполнения примера в консоли среды разработки была выведена информация о полученном календарном измерении и созданном периодическом календарном измерении:
Количество уровней данных: 1
Идентификатор базового уровня данных: 1
Идентификатор первого уровня данных: 1
Наименование уровня данных: Годы
Количество уровней данных в пустом контейнере: 0
Количество уровней данных во втором контейнере: 1
Идентификатор уровня данных №0: 5
Базовое измерение не определено
Список настроек периодического календарного измерения пуст
См. также: