Работа с полями измерения

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

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

Описание

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

Исходный код

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

// Получаем массив измерений куба
SNArray allDimensions = [self allDimensions];
// Получаем в массиве первое измерение куба
SPPLDimension dimension = allDimensions->objectAtIndex<PPLDimension>(0);
// Получаем информацию об используемых полях в таблице данных измерения
SPPLDimensionFields dimensionFields = dimension->fields();
// Получаем массив полей таблицы
SNArray dimensionFieldsItems = dimensionFields->items();
// Создаем объект полей измерения с помощью конструктора без параметров
SPPLDimensionFields createdFields = new PPLDimensionFields();
// Выводим в консоль среды разработки количество полей созданного объекта
printf("Количество полей первого объекта: %d\n", createdFields->items()->count());
// Создаем второй объект полей измерения на основе массива полей таблицы
SPPLDimensionFields createdFields2 = new PPLDimensionFields(dimensionFieldsItems);
// Получаем текстовое описание второго объекта полей измерения
SNString fieldsDescription = createdFields2->description();
// Выводим в консоль среды разработки описание второго объекта
printf("Описание второго объекта:\n%s\n", fieldsDescription->UTF8String());
// Задаем в строке наименование поля
SNString fieldName = NStr("ID");
// Проверяем, существует ли поле с таким именем
bool hasFieldWithName = createdFields2->hasFieldWithName(fieldName);
// Производим над полем ряд операций, если поле с таким наименованием существует
if(hasFieldWithName == true)
{
    // Извлекаем объект поля по заданному наименованию
    SPPLDimensionField dimensionField = createdFields2->getFieldByName(fieldName);
    // Получаем наименование поля
    SNString dimensionFieldName = dimensionField->name();
    // Получаем тип поля
    SNString dimensionFieldType = dimensionField->type();
    // Получаем атрибут поля
    SNString dimensionFieldAttribute = dimensionField->attribute();
    // Выводим в консоль среды разработки наименование, тип и атрибут поля
    printf("Поле второго объекта: %s, тип: %s, атрибут: %s\n", dimensionFieldName->UTF8String(), dimensionFieldType->UTF8String(),
    dimensionFieldAttribute->UTF8String());
    // Получаем наименование поля, заключенное в кавычки
    SNString dimensionFieldQuotedName = dimensionField->quotedName();
    // Получаем текстовое описание поля
    SNString dimensionFieldDescription = dimensionField->description();
    // Выводим в консоль среды разработки наименование поля, заключенное в кавычки, и текстовое описание поля
    printf("Описание поля %s второго объекта:\n%s\n", dimensionFieldQuotedName->UTF8String(), dimensionFieldDescription->UTF8String());
}
// Задаем в строке новое наименование поля
fieldName = NStr("END_DATE");
// Проверяем, существует ли поле с таким именем
hasFieldWithName = createdFields2->hasFieldWithName(fieldName);
// Создаем поле, если поле с таким наименованием не существует
if(hasFieldWithName == false)
{
    // Создаем справочник, в котором содержится описание нового поля
    SNMutableDictionary fieldDescription = NMutableDictionary::mutableDictionary();
    // Добавляем в справочник название поля
    fieldDescription->setObjectForKey(fieldName, NStr("name"));
    // Создаем новое поле на основе справочника
    SPPLDimensionField createdField = PPLDimensionField::field(fieldDescription);
    // Выводим в консоль среды разработки наименование нового поля
    printf("Поле %s создано успешно\n", createdField->name()->UTF8String());
}

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

Количество полей первого объекта: 0

Описание второго объекта:

<NMutableArray:

name: KEY

type: INTEGER

attribute: NULL

name: BLOCK_TYPE

type: INTEGER

attribute: BLOCK_TYPE

name: START_DATE

type: INTEGER

attribute: START_DATE

name: NAME

type: TEXT

attribute: NAME

name: ID

type: TEXT

attribute: ID

name: ORDER

type: INTEGER

attribute: ORDER

name: VISIBLE

type: INTEGER

attribute: NULL

name: PARENT_KEY

type: INTEGER

attribute: NULL

>

Поле второго объекта: ID, тип: TEXT, атрибут: ID

Описание поля `ID` второго объекта:

name: ID

type: TEXT

attribute: ID

Поле END_DATE создано успешно

См. также:

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