Работа с календарным измерением

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

Базовое измерение не определено

Список настроек периодического календарного измерения пуст

См. также:

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