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

Набор непрозрачные типы CFArray, CFDictionary, CFSet и CFBag предлагает подобные наборы функций для управления значениями, содержавшими непостоянными наборами: добавление значений, удаление значений, замена значений, и т.д. Существуют некоторые различия в поведении на основе того, гарантирует ли набор уникальность ключей и значений. Табличные 1 сводки поведение функций переменчивости. Столбец Operation идентифицирует тип работы с помощью параметра, найденного в функции переменчивости, такой как «Замена» в CFDictionaryReplaceValue.

Табличная 1  Семантика непостоянных операций набора

Работа

Тип набора

Что это Средние значения

Добавить

CFArray

Вставьте значение после всех других значений (index=count).

Вставить

CFArray

Вставьте значение в данном индексе набора.

Добавить

все кроме CFArray

Для CFDictionary и CFSet, увеличьте ценность, если это отсутствует, ничего не сделайте, если это присутствует. Для CFBag, добавленная стоимость, даже если это уже присутствует.

Замена

все

Если указанное значение присутствует, замените его другим значением; иначе, ничего не сделайте.

Набор

все

Добавьте значение, если это отсутствует, замените его, если это присутствует.

Удалить

все

Удалите значение, если оно присутствует, ничего не сделайте, если это отсутствует.

С фиксированным размером непостоянные наборы необходимо заботиться, чтобы избежать добавлять вне полного предела. Набор фиксированного размера позволит Вам добавить столько значений, сколько Вы хотите, но не дает уведомления, когда Вы превышаете способность. Однако выполнение так приведет к неопределенному поведению, которое является наиболее вероятным нежелательным.

Тип CFArray обладает одной работой переменчивости, которая является особенной для него. С CFArraySortValues функция можно сортировать значения, содержавшие массивом. Функция компаратора, которая должна соответствовать CFComparatorFunction введите, используется для сравнения значений. Перечисление 1 дает пример использования CFArraySortValues функция.

Перечисление 1  , Сортирующее массив

CFMutableArrayRef createSortedArray(CFArrayRef anArray) {
    CFIndex count = CFArrayGetCount(anArray);
    CFMutableArrayRef marray = CFArrayCreateMutableCopy(NULL, count, anArray);
    CFArraySortValues(marray, CFRangeMake(0, count), (CFComparatorFunction)CFStringCompare, NULL);
    return marray;
}

Заметьте что CFStringCompare функция используется, в этом случае, для сравнения объектов CFString. Базовая Основа обеспечивает другие функции компаратора, которые имеют CFComparatorFunction введите, особенно CFDateCompare и CFNumberCompare. Когда массив содержит Базовые объекты Основы, можно передать в надлежащей предопределенной функции компаратора CFArraySortValues функционируйте для сортировки тех объектов.