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